【发布时间】:2019-03-15 21:45:34
【问题描述】:
假设,在AWS docs 之后,我想使用类似的卸载命令
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 问题,所以我想我会发布一个让其他人受益的方法。
【问题讨论】:
-
“应该引用完整的查询”是什么意思?
-
@JohnRotenstein,我的意思是给出的示例中的第一个单引号(紧接在日期之前 => 2019-01-01 将在客户端提交后解析时转义字符串文字(例如 SQLWorkbench 和其他). 然后解析查询是无效的 SQL (在这种情况下是
SELECT * FROM table_name WHERE day =所以你需要转义日期周围的单引号 (或任何其他字符串文字) 以获得有效的 SQL 语句. 是否这有意义吗?
标签: sql amazon-web-services amazon-redshift