我正在使用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数据,并遇到了同样的问题。