将 txt 文件复制到 Redshift

Posted

技术标签:

【中文标题】将 txt 文件复制到 Redshift【英文标题】:Copying txt file to Redshift 【发布时间】:2017-10-04 20:39:00 【问题描述】:

我正在尝试使用以下命令将文本文件从 S3 复制到 Redshift,但出现相同的错误。

错误: 缺少换行符:在位置 177 发现意外字符 0xffffffe2

从 's3://abc_def/txt_006' 复制表 凭据“1234567890” 分隔符“|” NULL 作为'NULL' 空作为 '' ;

文本文件没有标题,字段分隔符为|。 我尝试使用:ACCEPTINVCHARS 传递参数。

Redshift 显示同样的错误

1216 错误代码:输入行无效。

谁能提供如何解决这个问题?

提前致谢。

【问题讨论】:

欢迎来到 SO。请适当地格式化您的问题。 你检查过位置177的内容了吗?如果您可以提供导致错误的数据样本以及表格说明,那将有助于我们为您提供帮助。 尝试打开文件(十六进制编辑器)并检查该位置的内容? 【参考方案1】:

您的文件是 UTF8 格式吗?如果不转换并尝试重新加载。

【讨论】:

【参考方案2】:

我假设文本文件的路径是正确的。您还使用一些工具生成了文本文件并手动上传到 redshift

我遇到了同样的问题,问题在于空格。我建议您通过清空和修剪空格来生成文本文件。

您的查询应该是select RTRIM(LTRIM(NULLIF(columnname, ''))),.., from table。将此查询的输出生成到文本文件中。

如果您使用的是 SQl Server,请使用 BCP.exe 通过将上述查询与所有列和函数一起传递来查询表

然后在S3上传txt文件后使用下面的复制命令

复制表格 来自 's3://path.txt' access_key_id '值' secret_access_key 'value' 您也可以使用上述凭据 分隔符“|” COMPUPDATE ON 删除引号 接受invchars 为空 饰边 BLANKSASNULL 填充记录 ; 犯罪; 这解决了我的问题。如果您还有其他问题,请告诉我们。

【讨论】:

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

使用复制命令将 Json 文件加载到 redshift

将文件(带有特定后缀)从 S3 复制到 Redshift

使用 COPY 命令将数据从 JSON 文件复制到 Redshift

将文件从 s3 复制到 redshift 花费的时间太长

将 s3 文件复制到带有 IDENTITY 列且不带 EXPLICIT_IDS 的 Redshift 表

使用复制命令将数据从 s3 加载到 redshift