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 中删除或删除数据?