在 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 版本。
我正在尝试使用 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 版本。