在错误日志中查看不正确的行

在错误日志中查看不正确的行

如果用户使用了单行错误隔离(见定义一个带有单行错误隔离的外部表或者在单行错误隔离模式中运行COPY),任何由格式错误的行会被Greenplum数据库内部记录下来。

Greenplum数据库用一种表格式捕捉下列错误信息:

表 1. 错误日志格式
类型 描述
cmdtime timestamptz 错误发生时的时间戳。
relname text COPY命令的外部表名称或者目标表名称。
filename text 包含该错误的装载文件的名称。
linenum int 如果使用的是COPY,这里是错误发生在装载文件的行号。对于使用file://协议或者gpfdist://协议以及CSV格式的外部表,文件名和行号会被记录。
bytenum int 对于使用gpfdist://协议以及TEXT格式数据的外部表:错误发生在装载文件中的字节偏移。gpfdist按块解析TEXT文件,因此不可能记录行号。

CSV文件是一次解析一行,因此对于CSV文件可以跟踪行号

errmsg text 错误消息文本。
rawdata text 被拒绝行的裸数据。
rawbytes bytea 在有数据库编码错误(使用的客户端编码不能被转换成一种服务器端编码)的情况中,不可能把编码错误记录为rawdata。相反会存储裸字节,并且用户将看到任何非七位ASCII字符的十进制码。

用户可以使用Greenplum数据库的内建SQL函数gp_read_error_log()来显示内部记录的格式化错误。例如,这个命令显示表ext_expenses的错误日志信息:

SELECT gp_read_error_log('ext_expenses');

有关管理被内部记录的格式化错误的信息,请见Greenplum数据库参考指南中命令COPY或者CREATE EXTERNAL TABLE的部分。