问题描述
When importing a file into Greenplum,one lines fails,and the whole file is not imported successfully.Is there a way can skip the wrong line and import other data into Greenplum successfully?
Here are my sql execution and error messages:
使用分隔符','从'/gp_wkspace/outputs/base_tables/error_data_test.csv'复制cjh_test;
错误:整数的无效输入语法:“FE00F760B39BD3756BCFF30000000600” 上下文:复制 cjh_test,第 81 行,local_city 列:“FE00F760B39BD3756BCFF30000000600”
解决方法
Greenplum 对 COPY 命令进行了扩展,可让您记录错误并设置一定数量的错误,这些错误不会停止加载。以下是 COPY 命令文档中的示例:
COPY sales FROM '/home/usr1/sql/sales_data' LOG ERRORS
SEGMENT REJECT LIMIT 10 ROWS;
这告诉 COPY 可以在不停止加载的情况下忽略 10 个坏行。拒绝限制可以是行数或加载文件的百分比。您可以使用以下命令检查 psql 中的完整语法:\h copy
如果您正在将一个非常大的文件加载到 Greenplum,我建议您查看 gpload 或 gpfdist(它们也支持段拒绝限制语法)。 COPY 是单线程通过主服务器,其中 gpload/gpfdist 将数据并行加载到所有段。对于较小的加载文件,COPY 会更快,而对于加载文件中的数百万行,COPY 会更快。