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

时间:2019-08-22 07:57:47

标签: amazon-redshift database-schema

我遇到以下错误:

  

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不存在或者如果它是星期日,则返回'2017-01-01',否则返回今天11天。

无论我尝试什么,我都会遇到相同的错误:

  

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

1 个答案:

答案 0 :(得分:1)

最后,在管道中唯一起作用的就是使用svv_table_info表执行此操作。

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";