【发布时间】:2016-01-06 15:52:50
【问题描述】:
使用默认分隔符“|”将 ~500 gig 表卸载到 S3。该命令看起来像这样......
UNLOAD ('select * from some_table')
TO 's3://some-path/unloaded-tables/some-table/'
CREDENTIALS 'aws_access_key_id=xyz; aws_secret_access_key=abc'
MANIFEST;
我正在尝试使用如下命令将此数据重新加载回 some_table..
COPY some_table
FROM 's3://some-path/unloaded-tables/some-table/manifest'
CREDENTIALS 'aws_access_key_id=xyz; aws_secret_access_key=abc'
MANIFEST
DELIMITER '|';
对数据的一个子集进行了测试,以确保它是可重新加载的。然而,事实证明数据集中的一列可以包含一个管道(大约 %20 的记录似乎)。测试集中没有这样的数据。
现在尝试加载数据时,无法正确解析包含管道的记录。
我会惊讶地发现,UNLOAD 命令在卸载时并未转义记录中的分隔符,但也许这太天真了。
除了一些从 s3 下载每个文件并尝试手动解决问题的英雄程序之外,我有什么想法可以解决这个问题吗?我祈祷有一个神奇的 COPY 命令参数可以在这里提供帮助。
【问题讨论】:
-
如果您好奇,我能够恢复最初生成表的原始日志级别数据,并在此基础上重新生成表。
标签: amazon-redshift