Greenplum:查找任何外部表的关联错误表

Posted

技术标签:

【中文标题】Greenplum:查找任何外部表的关联错误表【英文标题】:Greenplum: Find associated error table of any external table 【发布时间】:2016-02-23 11:48:47 【问题描述】:

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

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

问候, 古鲁普里特

【问题讨论】:

每个外部表不需要自己的错误表。数据库中的所有外部表都可以共享一个错误表。这可能会让您的问题一开始就消失。 【参考方案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() 并传入外部表名来获取与文件关联的错误。上面的链接也有一个例子。

【讨论】:

感谢您的回复,如果有任何错误记录到错误表中,上述解决方案将起作用,但是有没有办法通过传递外部表找到错误表名称【参考方案2】:

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。

【讨论】:

以上是关于Greenplum:查找任何外部表的关联错误表的主要内容,如果未能解决你的问题,请参考以下文章

将数据插入 Greenplum 物理表

Greenplum - 外部表

Greenplum 实时数据仓库实践——Greenplum监控与运维

Greenplum 实时数据仓库实践——Greenplum监控与运维

实体框架 - 具有挑战性的设置包括多个主键,以及与外部表的多个关联

如何使用greenplum外部表访问hadoop hdfs