导入后,Sqlite3会破坏一些字符

时间:2015-02-25 12:46:26

标签: sqlite csv encoding

我有一个标签分隔文件,其中包含以下记录:

no      Newcastle       1       NULL    NULL    NULL
uk      Ньюкасл 1       NULL    NULL    NULL
ja      ニューカッスル  1       NULL    NULL    NULL

要将它们导入sqlite,我使用:

create table cities (country text, name text, count integer...);
.separator '    '
.import file cities

(其中''上面包含制表符)。该文件似乎导入正常,但一些非ASCII字符损坏,尤其是在字符串结尾处,并替换为问号。

no           Newcastle         1                NULL         NULL          NULL      
uk           Ньюкасл    1                NULL         NULL          NULL      
ja           ニューカッ?  1                NULL         NULL          NULL   

导入时发生损坏。我尝试在导入之前使用 PRAGMA编码=“UTF-8”; ,但它没有帮助。有什么想法吗?

根据以下用户CL的请求进行更新

输入文件的一部分的Hexdump(与上面显示的部分相同,其中一些附加数值与此处无关;在ASCII列中,损坏的字符在“j”之后的“1”之前):

00008180  30 30 30 30 30 30 32 30  37 33 32 33 39 09 31 34  |0000002073239.14|
00008190  38 36 33 39 36 31 33 34  35 33 33 33 36 35 38 38  |8639613453336588|
000081a0  09 75 6b 09 d0 9d d1 8c  d1 8e d0 ba d0 b0 d1 81  |.uk.............|
000081b0  d0 bb 09 31 09 4e 55 4c  4c 09 4e 55 4c 4c 09 4e  |...1.NULL.NULL.N|
000081c0  55 4c 4c 0a 31 32 30 30  30 30 30 30 30 30 30 30  |ULL.120000000000|
000081d0  32 30 37 33 32 34 30 09  31 34 38 36 33 39 36 31  |2073240.14863961|
000081e0  33 34 35 33 33 33 36 35  38 38 09 6a 61 09 e3 83  |3453336588.ja...|
000081f0  8b e3 83 a5 e3 83 bc e3  82 ab e3 83 83 e3 82 b9  |................|
00008200  e3 83 ab 09 31 09 4e 55  4c 4c 09 4e 55 4c 4c 09  |....1.NULL.NULL.|
00008210  4e 55 4c 4c 0a 31 32 30  30 30 30 30 30 30 30 30  |NULL.12000000000|
00008220  30 32 30 37 33 32 34 31  09 31 34 38 36 33 39 36  |02073241.1486396|

违规记录的选择十六进制(名称)的结果:

hex(name)                  
--------------------------------------
31323030303030303030303032303733323430

1 个答案:

答案 0 :(得分:0)

这与导入无关;使用sqlite3时,.width命令行工具不会正确截断字符串。