将 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 COPY 命令将数据从 JSON 文件复制到 Redshift