0

有没有办法找出与每个外部表关联的所有错误表的列表。

实际要求:我在Greenplum中使用外部表和来自文件形式的源数据,通过外部表将数据摄取到Greenplum。我想向源系统报告所有被拒绝的行

问候,古鲁普里特

4

2 回答 2

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。

于 2016-03-13T14:22:10.787 回答
1

http://gpdb.docs.pivotal.io/4340/admin_guide/load/topics/g-viewing-bad-rows-in-the-error-table-or-error-log.html

您基本上只需使用内置函数 gp_read_error_log() 并传入外部表名即可获取与文件关联的错误。上面的链接中也有一个示例。

于 2016-02-24T16:28:49.817 回答