GBase 8c
其他
文章

GBase 8c 数据导入-错误处理

发表于2023-12-08 09:49:29359次浏览3个评论

在GBase 8c数据库中,进行数据导入过程中出现的错误。可根据获取的错误信息,对照表1以处理数据导入错误。

表 1 处理数据导入错误

错误信息

原因

解决办法

missing data for column "r_reason_desc"

数据源文件中的列数比外表定义的列数少。

对于TEXT格式的数据源文件,由于转义字符(\)导致delimiter(分隔符)错位或者quote(引号字符) 错位造成的错误。

示例:目标表存在3列字段,导入的数据如下所示。由于存在转义字符“\”,分隔符“|”被转义为第二个字段的字段值, 导致第三个字段值缺失。

BE|Belgium\|1

  1. 由于列数少导致的报错,选择下列办法解决:

  2. 在数据源文件中,增加列r_reason_desc的字段值。

  3. 在创建外表时,将参数fill_missing_fields设置为on。即当导入过程中,若数据源文件中一行数据的最后一个字段缺失,则把最后一个字段的值设置为NULL,不报错。

2. 对由于转义字符导致的错误,需检查报错的行中是否含有转义字符(\)。若存在,建议在创建外表时,将参数“noescaping”(是否不对'\'和后面的字符进行转义)设置为true。

extra data after last expected column

数据源文件中的列数比外表定义的列数多。

  1. 在数据源文件中,删除多余的字段值。

  2. 在创建外表时,将参数ignore_extra_data设置为on。即在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列。

invalid input

syntax for type

numeric: "a"

数据类型错误。

在数据源文件中,修改输入字段的数据类型。根据此错误信息,需将输入的数据类型修改为numeric。

null value in

column

"staff_id"

violates not-null

constraint

非空约束。

在数据源文件中,增加非空字段信息。根据此错误信息,需增加staff_id列的值。

duplicate key value violates unique constraint "reg_id_pk"

唯一约束。

删除数据源文件中重复的行。通过设置关键字DISTINCT,从SELECT 结果集中删除重复的行,保证导入的每一行都是唯一 的。

gbase=# INSERT INTO reasons SELECT DISTINCT * FROM foreign_tpcds_reasons;

value too long

for type

character

varying(16)

字段值长度超过限制。

在数据源文件中,修改字段值长度。根据此错误信息,需将字段值长度限制为VARCHAR2(16)。

评论

登录后才可以发表评论
崔哥发表于 7个月前
千里黄云白日曛,北风吹雁雪纷纷。莫愁前路无知己,天下谁人不识君。六翮飘飖私自怜,一离京洛十余年。丈夫贫贱应未足,今日相逢无酒钱。
用户头像
levvel发表于 6个月前
嗯,只能说不错!
崔哥发表于 4个月前
苏溪亭上草漫漫,谁倚东风十二阑。燕子不归春事晚,一汀烟雨杏花寒。