我遇到以下错误:
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.
答案 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";