使用CSV中的COPY的Amazon Redshift错误 - 引号内的换行符

时间:2014-12-12 20:39:55

标签: csv copy amazon-redshift linefeed

我正在使用COPY将MySQL数据导入我的Redshift数据库。我遇到了一个问题,我在表中有JSON数据并且它无法复制,说“分隔值缺少结束引用”。

所以我开始深入研究这个问题,并进行了一些实验。我做了一个非常基本的表来测试它,称为测试,如下:

CREATE TABLE test(cola varchar(1000),colb varchar(1000))

然后我使用COPY命令从一个名为test.csv的文件填充此表,该文件位于S3存储桶中。如果文件看起来像这样,它可以工作:

"{  
""contactInfo"": [  
    ""givenName"",  
    ""familyName"",  
    ""fullName"",  
    ""middleNames"",  
    ""suffixes"",  
    ""prefixes"",  
    ""chats"",  
    ""websites""  
]}", "a"  

如果看起来如此,则失败:

"a", "{  
""contactInfo"": [  
    ""givenName"",  
    ""familyName"",  
    ""fullName"",  
    ""middleNames"",  
    ""suffixes"",  
    ""prefixes"",  
    ""chats"",  
    ""websites""  
]}"  

因此,如果我的JSON数据位于第一列,COPY将忽略QUOTE中的换行符。如果它在第二列或更晚的列中,它会将换行视为数据行的末尾。

为了记录,我没有设置QUOTE AS,我让它默认为“,这就是为什么我加倍文件中的字符。

任何人都知道为什么会这样,以及我如何解决它?我不能一直将数据移动到第一列,我并不总是知道它在哪里,并且可能有多列JSON数据。

编辑: 为了记录,我尝试了在字符串中使用简单的换行符,没有JSON数据,并遇到了同样的问题。

0 个答案:

没有答案