更新时间:2025-05-29 GMT+08:00
数据存在错误时的导入操作指南
数据导入过程中的容错处理机制提供两种可选模式。
智能修正模式(自适应入库)
- 处理原则:以数据完整性优先,通过智能修正确保最大程度的数据入库。
- 适用场景:导入数据中出现列数异常(冗余列)以及字符异常的情况。
- 处理流程:
- 处理列数异常(冗余列截断)。
- 进行字符集转码与非法字符清洗。
- 完整写入目标数据库。
- 输出结果:修正后的数据集。字符异常的情况会有GaussDB日志记录。
严格校验模式(精准入库)
- 处理原则:以数据准确性优先,确保入库数据的绝对合规性。
- 适用场景:在医疗记录、金融交易等对数据精度要求极高的领域,若担心智能修正模式在导入数据时自动修正会影响数据准确性,可采用此模式。
- 处理流程:
- 执行多级校验(列数异常、字符异常、数据类型转换异常及约束冲突异常)。
- 生成错误诊断报告(含行号、错误类型、错误数据)。
- 建立错误数据隔离区。
- 仅通过校验的原始数据直接入库。
- 输出结果:纯净数据集以及错误明细报告(通过gs_copy_error_log与gs_copy_summary查看)。
- 容错级别:适用于智能修正模式处理的所有异常,如多列、缺列、废弃列、数据类型转换错误、字段超长、转码异常等。具体使用方法如下:
1 2 3 4
--当导入数据过程中出现数据类型错误的次数不超过 100 次时,导入不会报错,会继续导入下一行。若超过 100 次,则正常报错。错误数据的详情及行号会记录在gs_copy_error_log表中。 gaussdb=# COPY test_copy FROM '/home/omm/temp/test.csv' log errors reject LIMIT '100' CSV; --相较于上条语句,下面这条会在gs_copy_error_log中额外记录错误行的完整数据,在无数据安全风险的场景下推荐使用。该语句需要系统管理员权限。 gaussdb=# copy test_copy from '/home/omm/temp/test.csv' log errors data reject limit '100' csv;
总结
智能修正模式与严格校验模式可以结合使用,且智能修正模式具有优先级。在进行COPY导入时,若已明确指定对数据异常采用智能修正,那么该行数据的处理将不会触发严格校验模式。这意味着错误表不会记录相应数据,同时也不会扣除reject limit次数。建议用户根据自身实际情况,权衡是否自动修正列异常与字符异常后入库,还是直接舍弃。
父主题: COPY导入导出最佳实践