如何处理 AWS Redshift 卸载命令中的引用值?

Luc*_*rts 5 sql amazon-web-services amazon-redshift

假设,按照AWS 文档,我想使用卸载命令,如

unload
(
'SELECT * 
FROM table_name 
WHERE day = '2019-01-01' 
')
to 's3://bucket_name/path' 
iam_role 'arn:aws:iam::<aws acct num>:role/<redshift role>'
ADDQUOTES
ESCAPE
DELIMITER ','
GZIP
ALLOWOVERWRITE; 
Run Code Online (Sandbox Code Playgroud)

问题是完整查询应该被引用,并且在完整查询(作为有效的 sql)完成之前将字符串文字写入查询将转义字符串。如何在 AWS redshift 卸载语句中转义引号?

完全公开,我知道一种方法来做到这一点,但还没有看到一个好的链接或 SO 问题,所以我想我会为了其他人的利益发布一个。

Joh*_*ein 7

卸载 - Amazon Redshift

如果您的查询包含引号(例如将文字值括起来),请将文字放在两组单引号之间——您还必须将查询括在单引号之间:

('select * from venue where venuestate=''NV''')


Jav*_*más 6

您可以将查询放在 $$ 符号之间,这样您就不必担心任何类型的引号

unload
(
$$SELECT * 
FROM table_name 
WHERE day = '2019-01-01' 
$$)
to 's3://bucket_name/path' 
iam_role 'arn:aws:iam::<aws acct num>:role/<redshift role>'
ADDQUOTES
ESCAPE
DELIMITER ','
GZIP
ALLOWOVERWRITE; 
Run Code Online (Sandbox Code Playgroud)

  • 你不知道在 36 小时的头痛之后我有多高兴 - 上帝保佑你。 (5认同)