如何在 Redshift 中查询架构信息?

How to query the schema info in Redshift?

我收到以下错误:

ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables.

我明白这是因为我只是想使用领导节点功能,但是有其他方法可以做同样的事情吗?

我在 Redshift 数据库上的 Amazon Data Pipeline 中 运行 这个。

CREATE TABLE "schema_n"."temp_variable"
AS    
SELECT CASE WHEN (NOT EXISTS(SELECT 1 FROM PG_TABLE_DEF pgtd WHERE schemaname = 'schema_xyz' AND tablename = 'table_xyz')) OR (DATE_PART('dow', CURRENT_DATE) = 0)
         THEN '2017-01-01'::DATE 
        ELSE CURRENT_DATE - 11
        END AS "date_import";

我也试过:

CREATE TABLE "schema_n"."temp_variable"
AS    
SELECT CASE WHEN (NOT EXISTS(SELECT * FROM information_schema.tables WHERE table_schema = 'schema_xyz' AND table_name = 'table_xyz')) OR (DATE_PART('dow', CURRENT_DATE) = 0)
          THEN '2017-01-01'::DATE 
        ELSE CURRENT_DATE - 11
        END AS "date_import";

基本上我正在尝试执行以下操作:

如果 table_xyz 不存在或者如果是星期天,return '2017-01-01' 否则 return 今天 - 11 天。

无论我尝试什么,我总是收到同样的错误:

ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables.

最后,管道中唯一可行的方法是使用 svv_table_info table。

CREATE TABLE "schema_n"."temp_variable" (
   "date_import" DATE;

INSERT INTO "schema_n"."temp_variable"
SELECT
    CASE WHEN (NOT EXISTS(SELECT 1 FROM svv_table_info WHERE "schema" = 'schema_xyz' AND "table" = 'table_xyz')) OR (DATE_PART('dow', CURRENT_DATE) = 0)
        THEN '2017-01-01'::DATE 
    ELSE CURRENT_DATE - 11
    END AS "date_import";