sql - “ 取而代之 ””
问题描述
redshift 卸载命令正在将“替换为”。示例:
UNLOAD($$ select '"Jane"' as name $$)
TO 's3://s3-bucket/test_'
iam_role arn:aws:iam::xxxxxx:role/xxxxxx'
HEADER
CSV
DELIMITER ','
ALLOWOVERWRITE
输出看起来像: ""Jane""
如果我使用 运行相同的命令select 'Jane' as name
,则输出显示完全没有引号Jane
。但我需要输出"Jane"
解决方案
您要求卸载的文件采用 CSV 格式,而 CSV 格式表示,如果您想要在数据中使用双引号,则需要使用另一个双引号对其进行转义。见https://datatracker.ietf.org/doc/html/rfc4180
所以 Redshift 完全按照你的要求做。现在,如果您只想要一个逗号分隔的文件,那么您不想使用“CSV”,因为这将添加所有必要的字符以使文件完全符合 CSV 规范。
这种选择将归结为正在读取文件的工具是什么,以及他们是否期望一个符合 rfc 的 CSV 或只是一个字段用逗号分隔的简单文件。
这是我的一个抱怨 - 工具说他们读取 CSV 但不遵循规范。如果您说 CSV,请遵循格式。或者将您阅读的内容称为不同的内容,例如 CDV - 逗号分隔值。
推荐阅读
- firebase - 来自 Flutter 中 firebase_auth 插件的更多用户数据
- c++ - C++ - 无法从队列中删除元素
- php - PHP:根据与键值相关的术语对多维数组进行排序
- javascript - 如何使用 Node-ews 集成 Exchange 2010 版本的投票选项?
- c++ - std::cin 问题?这里发生了什么??std in vs 硬编码值
- php - 如何阻止名为 filename.php.jpg 的文件上传
- excel - 描述性统计,百分位数
- matlab - 在 Matlab 上运行 Faster R-CNN 时的 CUDA_ERROR_ILLEGAL_ADDRESS
- r - 如何在R中的同一数据框中按组或类别(按组)与其他列(具有多个值)匹配列中的值
- javascript - 似乎无法在 Python 项目中使用 Js2Py 捕获异常