有没有办法找出与每个外部表关联的所有错误表的列表。
实际要求:我在Greenplum中使用外部表和来自文件形式的源数据,通过外部表将数据摄取到Greenplum。我想向源系统报告所有被拒绝的行
问候,古鲁普里特
有没有办法找出与每个外部表关联的所有错误表的列表。
实际要求:我在Greenplum中使用外部表和来自文件形式的源数据,通过外部表将数据摄取到Greenplum。我想向源系统报告所有被拒绝的行
问候,古鲁普里特
pg_exttable的字段fmterrtbl
包含任何外部表的错误表的 oid。因此,查找数据库中所有外部表的错误表的查询是:
SELECT
external_namespace.nspname AS external_schema, external_class.relname AS external_table,
error_namespace.nspname AS error_schema, error_class.relname AS error_table
FROM pg_exttable AS external_tables
INNER JOIN pg_class AS external_class ON external_class.oid = external_tables.reloid
INNER JOIN pg_namespace AS external_namespace ON external_namespace.oid = external_class.relnamespace
LEFT JOIN (
pg_class AS error_class
INNER JOIN pg_namespace AS error_namespace ON error_namespace.oid = error_class.relnamespace
) ON error_class.oid = external_tables.fmterrtbl
对于没有错误表的外部表,error_schema 和 error_table 字段将为 NULL。
您基本上只需使用内置函数 gp_read_error_log() 并传入外部表名即可获取与文件关联的错误。上面的链接中也有一个示例。