在 REDSHIFT 中的 ALTER 语句中连接字符串(语法错误)

Posted

技术标签:

【中文标题】在 REDSHIFT 中的 ALTER 语句中连接字符串(语法错误)【英文标题】:Concatenate string in ALTER statement in REDSHIFT (syntax error) 【发布时间】:2019-12-27 11:22:12 【问题描述】:

我想在 redshift 中更改一个外部表。如果执行这个查询:

alter table "name_table" 
set location 'a string' || 
TO_CHAR((getdate()-1)::date, 'YYYYMMDD') || '/';

给我一​​个语法错误:

SQL 错误 [500310] [42601]:Amazon 无效操作:“||”处或附近的语法错误 位置:135;

也许我必须使用动态 SQL,但我不知道该怎么做。有人可以帮我吗?

编辑: 我尝试使用更改外部表的过程,这不会给我语法错误,但会返回如下错误:

您不能使用函数或过程更改外部表。

【问题讨论】:

【参考方案1】:

你想要update吗?

update "name_table" 
    set location = 'a string' || TO_CHAR((getdate()-1)::date, 'YYYYMMDD') || '/';

【讨论】:

不,我想在这里的第二个示例中更改外部表 docs.aws.amazon.com/redshift/latest/dg/…【参考方案2】:

我不认为位置可以是动态的。尽管您在 SQL 中发出此语句,但您不能使用标准运算符来构建 S3 路径。这与旧的 COPY TO 语句中的限制相同(目标文件不能是动态的)。

【讨论】:

以上是关于在 REDSHIFT 中的 ALTER 语句中连接字符串(语法错误)的主要内容,如果未能解决你的问题,请参考以下文章

ALTER SCHEMA NAME 是不是会影响对 Redshift 中架构的权限授予

如何使用更改表查询在 AWS Redshift 中添加多列

如何使用 Psycopg2 在 Redshift Spectrum 中添加分区 -

Redshift Spectrum 'alter table add partition' 安全性

如何在 Redshift 中的 select 语句中使用存储过程

如何在 Oracle 循环中的 select 语句中执行 alter 命令?