gpt4 book ai didi

amazon-web-services - Amazon Redshift COPY 命令中的转义分隔符

转载 作者:行者123 更新时间:2023-12-04 08:08:08 28 4
gpt4 key购买 nike

我正在将数据从 Amazon S3 提取到 Amazon Redshift 中的表中。该表包含各种列,其中某些列数据可能包含特殊字符。

复制命令有一个名为 Delimiter 的选项。我们可以在将数据拉入表格时指定分隔符。

问题是 2 倍 -

当我导出 (unload command)到 S3 使用分隔符 - 比如 , - 它工作正常,但是当我尝试从 S3 导入 Redshift 时,问题会蔓延,因为某些列包含 ',' 运算符,复制命令将其误解为分隔符并引发错误。

我尝试了各种分隔符,但我的表中的数据似乎包含导致上述问题的某种或其他类型的特殊字符。

我什至尝试使用多个分隔符卸载 - 比如 #%~,但是当使用复制命令从 s3 加载时 - 不支持双分隔符。

任何解决方案?

我认为可以使用 \ 来转义分隔符但出于某种原因,这也不起作用,或者我没有使用正确的语法在复制命令中进行转义。

最佳答案

以下示例显示了文本文件的内容,其中字段值以逗号分隔。

12,Shows,Musicals,Musical theatre
13,Shows,Plays,All "non-musical" theatre
14,Shows,Opera,All opera, light, and "rock" opera
15,Concerts,Classical,All symphony, concerto, and choir concerts

如果使用 DELIMITER 参数加载文件以指定逗号分隔的输入,则 COPY 命令将失败,因为某些输入字段包含逗号。您可以通过使用 CSV 参数并将包含逗号的字段括在引号字符中来避免该问题。如果引号字符出现在带引号的字符串中,则需要通过将引号字符加倍来对其进行转义。默认引号字符是双引号,因此您需要使用额外的双引号将每个双引号转义。您的新输入文件将如下所示。
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"

来源:- Load Quote from a CSV File

我使用的 -
COPY tablename FROM 'S3-Path' CREDENTIALS '' MANIFEST CSV QUOTE '\"' DELIMITER ',' TRUNCATECOLUMNS ACCEPTINVCHARS MAXERROR 2

如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。

关于amazon-web-services - Amazon Redshift COPY 命令中的转义分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42720342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com