如何停止获取错误并保留数据:缺少换行符:在位置 116 发现意外字符 0x31
Posted
技术标签:
【中文标题】如何停止获取错误并保留数据:缺少换行符:在位置 116 发现意外字符 0x31【英文标题】:How to stop getting error and keep data: Missing newline: Unexpected character 0x31 found at location 116 【发布时间】:2019-06-06 15:27:54 【问题描述】:我正在尝试将数据从 Amazon s3 复制到 Amazon Redshift,但每次都在同一行出现“意外字符”换行错误。它是文件中间的随机行,我试图复制的很多文件都发生了这种情况。
这里是副本声明:
COPY sample_table FROM "S3://bucket/file.psv' iam_role 'role' delimiter '|'
ACCEPTINVCHARS IGNOREBLANKLINES DATEFORMAT 'auto' TIMEFORMAT 'auto'
emptyasnull blanksasnull maxerror as 100000 ;
表格格式如下:
create table sample_table (
id varchar (25),
model varchar (25),
api varchar (25),
msgdatetime timestamp,
msgdate date,
alias bigint,
key varchar (255),
value varchar (50)
) ;
这是来自数据的原始行:
AAA111111111|AA1111111|sample_API|2019-06-06 11:20:00|2019-06-06|111111111|Sample_key|1
还应注意,这是自动化过程的一部分,上面的 sql 用于复制大量文件,这些文件都导致相同的问题。
【问题讨论】:
这个例子有效吗?我的意思是,如果您有 1 行的 s3,它会因该复制命令而失败吗?请检查,如果不是,您需要更新您的示例。 @JonScott 它之所以有效,是因为它复制了同一文件中的其余数据,但跳过了这一行并吐出一个错误,并且所有其他行的格式都相同 如果我用这一行创建一个 s3,然后运行创建表和复制命令 - 它工作得很好,那 1 行已正确加载到表中。为了获得帮助,请确保您可以获得一个实际失败的可验证示例。另外 - 您可能希望更新您的标题,因为这不是错误吗? @JonScott 这确实是我得到的确切错误,这个 s3 文件是从另一个来源提取的文件,不是直接在 s3 中创建的。值得一提的是,该文件是 psv。 psv 究竟是什么?只是一个文本文件?在您的文本中,您的信息与标题不同。 (也许?)。请问你能提供更多的行吗?我无法帮助您提供您所提供的内容 - 正如我上面所说的 - 它有效!您需要帮助我重新创建它 - 尝试使用您提供的信息自己重新创建它? 【参考方案1】:数据中的列比表格中的多
id = AAA111111111
model = AA1111111
api = sample_API
msgdatetime = 2019-06-06 11:20:00
msgdate = 2019-06-06
key = 111111111
value = Sample_key
在末尾留下“1”作为下一列。 1 是 0x31
您可能需要一个新列(我在下面称为 newcol)
create table sample_table (
id varchar (25),
model varchar (25),
api varchar (25),
msgdatetime timestamp,
msgdate date,
newcol varchar(255),
key varchar (255),
value varchar (50)
) ;
【讨论】:
我复制错误。我已经有一个额外的专栏(请参阅编辑后的帖子)以上是关于如何停止获取错误并保留数据:缺少换行符:在位置 116 发现意外字符 0x31的主要内容,如果未能解决你的问题,请参考以下文章