如何使用数据本身具有分隔符的 DELIMITER 选项在 Redshift 中复制数据?

She*_*har 1 amazon-web-services amazon-redshift

我有管道分隔数据,我正在尝试将其从 S3 复制到 RedShift,但复制操作失败并出现错误代码1202 : Extra column(s) found错误。

当我查看时stl_load_errors,对于具有 | 的行,复制操作失败。其中的分隔符。

样本数据:

1|hello world|how|are you|
2|"hope|you|are|doing|good"|thank you|
3|I am fine|thank you|
Run Code Online (Sandbox Code Playgroud)

对于上述数据, 2|"hope|you|are|doing|good"|thank you|无法复制,因为它有 | 分隔符本身,即使它位于双引号内。

我的复制命令如下所示:

COPY <DATABASE.TABLE NAME>
FROM 's3://path/to/file'
iam_role 'arn:aws:iam:my_role'
delimiter '|'
dateformat 'auto'
IGNOREHEADER 1
MAXERROR 5;
Run Code Online (Sandbox Code Playgroud)

AWS RedShift 文档有一个加载此类数据的示例,但他们使用了 CSV 选项,而不是 DELIMITER 选项。

我该如何解决这个问题?

Joh*_*ein 5

您应该添加该REMOVEQUOTES参数。

来自数据转换参数 - Amazon Redshift

从传入数据的字符串中删除周围的引号。引号内的所有字符(包括分隔符)都将被保留。