在 Amazon Redshift COPY 命令中使用多字符定界符

Use multi-character delimiter in Amazon Redshift COPY command

我正在尝试使用 COPY 命令将具有多字符分隔符 ('|~|') 的数据文件加载到 Amazon Redshift 数据库。 Redshift COPY 命令不允许使用多字符定界符。

我的数据是这样的-

John|~|23|~|Los Angeles|~|USA
Jade|~|27|~|New York|~|USA

当我尝试在 COPY 命令中使用多字符时,出现 "COPY delimiter must be a single character;" 错误。

我的 COPY 命令是这样的 -

copy test_data from 's3://abcd/testFile' 
credentials 'aws_access_key_id=<redacted>;aws_secret_access_key=<redacted>' 
delimiter '|~|' 
null as '[=11=]'
acceptinvchars
ignoreheader as 1
MAXERROR 1;

我无法替换或编辑源文件,因为它们非常大 (>100GB),所以我需要 AWS Redshift 范例中的解决方案。

如果您无法编辑源文件,也无法使用 multi-character 分隔符,则使用 | 作为分隔符并添加将加载的其他(假)列~.

然后您可以忽略这些列,或者使用 CREATE TABLE AS 将数据复制到新的 table 但没有这些列。

或者,使用 CREATE VIEW 制作一个没有假列的 table 版本。