有没有办法找出与每个外部表关联的所有错误表的列表。
实际要求:我使用Greenplum中的外部表和来自源的文件形式的数据,通过外部表将数据提取到Greenplum。我想将所有被拒绝的行报告给源系统
此致 Gurupreet
答案 0 :(得分:1)
您基本上只使用内置函数gp_read_error_log()并传入外部表名以获取与文件关联的错误。上面的链接也有一个例子。
答案 1 :(得分:1)
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。