openGauss学习笔记164 openGauss 数据库运维备份与恢复导入数据使用COPY FROM STDIN导入数据处理错误表

2024年 3月 13日 55.9k 0

openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表164.1 操作场景164.2 查询错误信息164.3 处理数据导入错误

openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表

164.1 操作场景

当数据导入发生错误时,请根据本文指引信息进行处理。

164.2 查询错误信息

数据导入过程中发生的错误,一般分为数据格式错误和非数据格式错误。

  • 数据格式错误

    在创建外表时,通过设置参数“LOG INTO error_table_name”,将数据导入过程中出现的数据格式错误信息写入指定的错误信息表error_table_name中。您可以通过以下SQL,查询详细错误信息。

    openGauss=# SELECT * FROM error_table_name;

    错误信息表结构如表1所示。

    表 1 错误信息表

    列名称 类型 描述
    nodeid integer 报错节点编号。
    begintime timestamp with time zone 出现数据格式错误的时间。
    filename character varying 出现数据格式错误的数据源文件名。
    rownum numeric 在数据源文件中,出现数据格式错误的行号。
    rawrecord text 在数据源文件中,出现数据格式错误的原始记录。
    detail text 详细错误信息。
  • 非数据格式错误

    对于非数据格式错误,一旦发生将导致整个数据导入失败。您可以根据执行数据导入过程中,界面提示的错误信息,帮助定位问题,处理错误表。

164.3 处理数据导入错误

根据获取的错误信息,请对照下表,处理数据导入错误。

表 2 处理数据导入错误

错误信息 原因 解决办法
missing data for column "r_reason_desc" 数据源文件中的列数比外表定义的列数少。对于TEXT格式的数据源文件,由于转义字符()导致delimiter(分隔符)错位或者quote(引号字符)错位造成的错误。示例:目标表存在3列字段,导入的数据如下所示。由于存在转义字符“”,分隔符“|”被转义为第二个字段的字段值,导致第三个字段值缺失。BE|Belgium|1 由于列数少导致的报错,选择下列办法解决:在数据源文件中,增加列“r_reason_desc”的字段值。在创建外表时,将参数“fill_missing_fields”设置为“on”。即当导入过程中,若数据源文件中一行数据的最后一个字段缺失,则把最后一个字段的值设置为NULL,不报错。对由于转义字符导致的错误,需检查报错的行中是否含有转义字符()。若存在,建议在创建外表时,将参数“noescaping”(是否不对''和后面的字符进行转义)设置为true。
extra data after last expected column 数据源文件中的列数比外表定义的列数多。 在数据源文件中,删除多余的字段值。在创建外表时,将参数“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结果集中删除重复的行,保证导入的每一行都是唯一的。openGauss=# INSERT INTO reasons SELECT DISTINCT * FROM foreign_tpcds_reasons;
value too long for type character varying(16) 字段值长度超过限制。 在数据源文件中,修改字段值长度。根据此错误信息,字段值长度限制为VARCHAR2(16)。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论