csv 红移复制命令-如何指定ESCAPE和QUOTE为“”“?

gt0wga4j  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(202)

我尝试使用复制命令将文件加载到redshift中。此文件在源位置已转义引号。我无法更改源文件的创建方式。这是导致问题的行类型,导致“CSV的无效引号格式错误”
1234,1,,“A”,,false,“一些文本“更多一些,文本”更多一些文本”
我使用的命令是
从my_s3_file凭证'my_creds' CSV忽略头1接受INVCHARS复制我的表;
我已尝试删除CSV选项,以便可以使用以下命令指定ESCAPE
从my_s3_file凭据复制my_table 'my_creds'限定符','转义忽略头1
但是字段中间的逗号充当了分隔符。我感觉字段周围的引号没有被识别出来
是否可以使用COPY命令加载此文件?
谢谢

dgenwo3n

dgenwo3n1#

对于这种情况,我将坚持使用CSV格式/选项,因为对于如何在这种情况下格式化数据,有一个文档化的、广泛使用的规范。
如果我理解的话,你在文件的字段中有双引号和逗号,规范要求你需要转义字段中的双引号(双引号使用双双引号)。
1234,1,,“A”,,假,“一些文本““一些更多的文本””一些更多的文本”
我相信你可以成功地沿着你所走的路(纯文本文件而不是CSV),用反斜杠()转义引号。
1234,1,,“A”,,false,“一些文本\“一些更多,文本\”一些更多文本”
我只是更喜欢CSV,因为规范有明确的方法来处理这些极端情况,而制定新的文件规则通常会导致意想不到的“下一个”极端情况。无论哪种方式,你都需要改变文件中的数据,添加一个转义或其他。
PS.不要复制粘贴以上内容,因为网站正在将普通字符改为特殊字符。

相关问题