在单行错误隔离模式中运行COPY

在单行错误隔离模式中运行COPY

默认情况下,COPY会在第一个错误处停止操作:如果数据包含一个错误,该操作失败并且没有数据被装载。如果用户在单行错误隔离模式中运行COPY FROM,Greenplum会跳过包含格式错误的行并且装载正确格式化的行。单行错误隔离模式只适用于包含格式错误的输入文件中的行。如果数据包含的是约束错误,例如违背NOT NULLCHECK或者UNIQUE约束,操作还是会失败并且不会有数据被装载。

指定SEGMENT REJECT LIMIT 会把COPY操作运行在单行错误隔离模式中。指定每一个Segment上可接受的错误行数,在达到这个行数后整个COPY FROM操作失败并且不会有数据被装载。这个错误行计数是针对每个Greenplum数据库的Segment,而不是针对整个装载操作。

如果COPY操作没有达到操作限制,Greenplum会装载所有正确格式化的行并且丢弃错误行。使用LOG ERRORS子句可以捕获Greenplum数据库内部的数据格式化错误。例如:

=> COPY country FROM '/data/gpdb/country_data' 
   WITH DELIMITER '|' LOG ERRORS
   SEGMENT REJECT LIMIT 10 ROWS;

有关调查错误行的信息,请见在错误日志中查看不正确的行