Redshift 使用 \\ 卸载 SELECT 语句

Posted

技术标签:

【中文标题】Redshift 使用 \\\\ 卸载 SELECT 语句【英文标题】:Redshift Unload SELECT statement with \\Redshift 使用 \\ 卸载 SELECT 语句 【发布时间】:2019-09-11 00:08:17 【问题描述】:

如果我在 AWS Redshift 卸载语句中有以下语句,语法如下:

SELECT \\'"id":"\\' || id || \\'",\\' || url || ltrim(home, \\'\\')
from users_details

\ 是什么意思?

python脚本中的完整语句是:

UNLOAD ('
        SELECT \\'"id":"\\' || id || \\'",\\' || url || ltrim(home, \\'\\')
        FROM users_details
    ')
TO AWS Bucket
    ALLOWOVERWRITE
    DELIMITER AS '\\t';

【问题讨论】:

【参考方案1】:

作者似乎试图在查询中转义引号。

它使用\' 表示引用中的引用,第一个\ 阻止Python 尝试解释第二个\

但是,UNLOAD - Amazon Redshift 中显示了一个更好的方法:

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

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

【讨论】:

谢谢。但是,这从中提取数据的列是从家里来的,对吧? 该行将包含来自idurlhome 的值。

以上是关于Redshift 使用 \\ 卸载 SELECT 语句的主要内容,如果未能解决你的问题,请参考以下文章

Redshift卸载到S3非常慢

从 Redshift 卸载到 S3:身份验证不起作用

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

以特定分区格式将数据卸载到 redshift

Redshift 卸载到 S3 位置,它是一个连接字符串

将大型数据集从 Redshift 卸载到 S3 失败并出现 I/O 错误