为什么Redshift UNLOAD查询无法正确引用列?

时间:2019-05-23 11:33:33

标签: amazon-redshift

我在AWS Redshift仓库表中有以下一行。

name               
-------------------
tokenauthserver2018

我通过简单的SELECT查询来查询

SELECT name
FROM tablename

当我尝试使用来自AWS Redshift的UNLOAD查询卸载它时,它已成功完成,但给出了奇怪的报价。

"name"
"tokenauthserver2018\

这是我的查询

UNLOAD ($TABLE_QUERY$
SELECT name
FROM tablename
$TABLE_QUERY$)
TO 's3://bucket/folder'
MANIFEST VERBOSE HEADER DELIMITER AS ',' 
NULL AS '' ESCAPE GZIP ADDQUOTES ALLOWOVERWRITE PARALLEL OFF;

我也尝试在没有ADDQUOTES的情况下进行卸载,但是得到了以下数据

name
"tokenauthserver2018

这是上面的查询。

UNLOAD ($TABLE_QUERY$
SELECT name
FROM tablename
$TABLE_QUERY$)
TO 's3://bucket/folder'
MANIFEST VERBOSE HEADER CSV NULL AS '' GZIP ALLOWOVERWRITE PARALLEL OFF;

1 个答案:

答案 0 :(得分:0)

Amazon支持能够解决此问题,我在这里为有兴趣的人发布答案。

这是由于我的数据中存在NULL字符\0。由于我无法控制源数据,因此我使用了TRANSLATE函数来替换\0字符。

SELECT
TRANSLATE("name", CHR(0), '') AS "name"
FROM <tablename>

参考:https://docs.aws.amazon.com/redshift/latest/dg/r_TRANSLATE.html