redshift unload : 仅在字符字段中加上引号而不是数字

Posted

技术标签:

【中文标题】redshift unload : 仅在字符字段中加上引号而不是数字【英文标题】:redshift unload : Putting quotes only only character fields and not numeric 【发布时间】:2017-07-13 05:16:44 【问题描述】:

我正在尝试在 redshift 上运行卸载命令以将数据从表转储到 CSV 文件中。此表具有字符和数字字段。字符字段可能包含逗号 (,) ,因此我需要在它们周围加上引号。但是,我的数字列不需要引号。

以下命令是我最接近的命令,但似乎无法摆脱我的数字数据周围的引号。我怎样才能达到预期的效果?

unload ('select * from mytable') to 
's3://mybucket/path/file.csv'
DELIMITER ',' ADDQUOTES

这会产生如下数据:

"Henry, Jr","23","4.5"
"Henry, Sr","56","4.2"

我想要的是:

"Henry, Jr",23,4.5 
"Henry, Sr",56,4.2

【问题讨论】:

【参考方案1】:

通过阅读官方文档,这似乎是不可能的。

我可以提出两种可能的解决方法:

1) 在查询中用引号将字符串列括起来,即代替

select * from mytable

select int_col_1, int_col_2, '"'||str_col_1||'"','"'||str_col_2||'"' from mytable

2) 导出制表符分隔的文件,这样文本列中的逗号就不再是问题了

【讨论】:

谢谢。是的,选项 1 似乎是一个很好的解决方法。等着看其他人是否能发现内置选项。 选项 2 也不错,因为您可以将制表符分隔的文件加载到任何数据库中,并且电子表格软件也支持 TSV

以上是关于redshift unload : 仅在字符字段中加上引号而不是数字的主要内容,如果未能解决你的问题,请参考以下文章

UNLOAD 命令是不是从 redshift 中删除或删除数据?

Redshift 中的 Unload 命令语法错误

Redshift 的 UNLOAD Query 生成的 S3 请求数

Redshift UNLOAD 语句在 19 分钟后被取消

Redshift UNLOAD 操作期间内存不足

为啥 Amazon Redshift UNLOAD 性能对于新数据要好得多?