Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon redshift 如何在红移中查询架构信息?_Amazon Redshift_Database Schema - Fatal编程技术网

Amazon redshift 如何在红移中查询架构信息?

Amazon redshift 如何在红移中查询架构信息?,amazon-redshift,database-schema,Amazon Redshift,Database Schema,我得到以下错误: 错误:红移表不支持指定的类型或功能(每条信息一个)。 我理解这是因为我试图只使用引线节点函数,但是否有其他方法来做同样的事情 我在Redshift数据库上的Amazon数据管道中运行这个 CREATE TABLE "schema_n"."temp_variable" AS SELECT CASE WHEN (NOT EXISTS(SELECT 1 FROM PG_TABLE_DEF pgtd WHERE schemaname = 'schema_xyz' AND tab

我得到以下错误:

错误:红移表不支持指定的类型或功能(每条信息一个)。

我理解这是因为我试图只使用引线节点函数,但是否有其他方法来做同样的事情

我在Redshift数据库上的Amazon数据管道中运行这个

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";
基本上,我正在努力做到以下几点:

如果表_xyz不存在或是周日,则返回“2017-01-01”,否则今天返回-11天

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

错误:红移表不支持指定的类型或功能(每条信息一个)。


最后,管道中唯一有效的方法就是使用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";

对不起,我在案例陈述的开头添加了SELECT。基本上,我将此返回存储在一个表中,然后将其用作ETL的时间变量。@JonScott当从客户端运行时,它们会工作,但在管道中它们会返回一条消息。我不知道CTA在这里不会工作。我将其更改为正确的表声明,但它仍然返回相同的错误。唯一的解决方法是在redshift(例如python脚本)之外运行select查询,将值返回到python脚本,然后在下一步(脚本内部)将这些值插入到目标表中。如果您正在使用数据管道,则此信息对您没有帮助。考虑移动到Apache气流以进行更大的控制。