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; 
问题是完整查询应该被引用,并且在完整查询(作为有效的 sql)完成之前将字符串文字写入查询将转义字符串。如何在 AWS redshift 卸载语句中转义引号?
完全公开,我知道一种方法来做到这一点,但还没有看到一个好的链接或 SO 问题,所以我想我会为了其他人的利益发布一个。
如果您的查询包含引号(例如将文字值括起来),请将文字放在两组单引号之间——您还必须将查询括在单引号之间:
('select * from venue where venuestate=''NV''')
您可以将查询放在 $$ 符号之间,这样您就不必担心任何类型的引号
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;