我在csv中有一组从MSSQL导入的图像。文件大小为1GB。 MSSQL中的数据类型是图像。当我想导入Postgres时,bytea中的数据类型出错。
错误:编码“UTF8”的无效字节序列:0xff
背景:复制照片,第1行
当我查看csv文件时,图像文件位于
中0xFFD8FFE000104A46494600010101006000600000FFE1...
我的问题:
我尝试过的解决方案:
http://pastebin.com/WrfjFqY6这是csv中的一行代码。 2列,id和照片。
任何人都知道如何解决这个问题?提前谢谢。
答案 0 :(得分:1)
正如yenyen在评论中指出的那样,问题是输入是UCS-2(可能真的是UTF-16)编码。
UCS-2是一个每字符两个字节的编码,包含空字节。如果你告诉PostgreSQL文件是utf-8那么它会看到输入为垃圾填充无效的utf-8序列。如果你告诉PostgreSQL它是一个简单的1字节编码,比如latin1,PostgreSQL会看到零(null)字节,并意识到它毕竟不是latin-1。
这里的技巧是使用可以显示原始字节的编辑器检查输入文件,而不仅仅是使用自动读取BOM并将其作为编码文本加载的文本编辑器。如果有疑问,请使用十六进制编辑器。