将 csv 文件从 s3 复制到 redshift 的问题

Posted

技术标签:

【中文标题】将 csv 文件从 s3 复制到 redshift 的问题【英文标题】:problems in copying a csv file from s3 to redshift 【发布时间】:2017-03-15 18:05:19 【问题描述】:

如果我运行复制命令将 s3 中的 .csv 文件的内容复制到 redshift 中的表,则会收到以下错误。

错误:“字符串长度超过 DDL 长度”。

我正在使用以下复制命令:

COPY enjoy from 's3://nmk-redshift-bucket/my_workbook.csv' CREDENTIALS 'aws_access_key_id=”****”;aws_secret_access_key=’**** ' CSV QUOTE '"' DELIMITER ',' NULL AS '\0'

我想可以通过控制台打开 s3 为我的文件提供的链接。 工作簿的链接是: link to my s3bucket cvs file

上面的文件充满了许多我真的不明白的奇怪字符。 复制命令使用这些字符而不是我在 csv 文件中输入的信息。因此导致字符串长度超出错误。

我使用 sql 工作台进行查询。我在 redshift 中的 'stl_load_errors' 表有 raw_field_values 组件,类似于我上面提到的链接中的字符,这就是我如何知道它是如何接受输入的

我是 aws 和 utf-8 配置的新手。所以请感谢您对此的帮助

【问题讨论】:

【参考方案1】:

您提供的链接指向一个.xlsx 文件(但扩展名为.csv 而不是.xlsx),它实际上是一个zip 文件。

这就是为什么你会看到那些奇怪的字符,前两个是'PK',这意味着它是一个zip文件。

因此,您必须先导出到.csv,然后才能使用该文件。

【讨论】:

没问题,很乐意提供帮助。

以上是关于将 csv 文件从 s3 复制到 redshift 的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 for 循环从 s3 复制 Redshift

将 csv 和 json 数据从 S3 复制到 Redshift

Redshift 从 S3 复制最新的 csv 文件

从充满 CSV 文件的 AWS S3 目录中复制 Redshift

如何使用从 s3 到 redshift db 的复制命令解决语法错误

来自 S3 的 Redshift 复制命令有效,但没有上传数据