我从一个制表符分隔的文本文件导入到sqlite3。在大多数情况下,值作为TEXT导入,但偶尔值会作为BLOB导入。这通常发生在文本中有一个稍微不寻常的符号时,例如|(管道)符号。为什么会发生这种情况,我能做些什么?我正在将sqlite .mode设置为tabs,没有关于文本文件编码的附加信息。代码如下:
.mode
tabs
.open filename.sq3 .mode tabs .import filename.tab tablename
bwleehnv1#
我确实遇到了同样的问题。我不能回答Why is this TEXT imported as a BLOB,但我是如何修复它的。在我的例子中,包含特殊字符(如ä,ü,ö)的行被导入为blob。在sqlite命令提示符下,从import_from_file.txt读取命令
Why is this TEXT imported as a BLOB
ä,ü,ö
import_from_file.txt
sqlite> .read 'C:\data\rawtext\import_from_file.txt'
文件import_from_file.txt如下所示
CREATE TABLE "Extract" ("extract" TEXT); .mode ascii .separator "@" "\n" .import C:\\data\\rawtext\\rawdata.txt
根据notepad++,文件rawdata.txt编码为ANSI。使用notepad++,文件转换为utf8。在文件转换为UTF8编码后,sqlite导入可以在没有任何blob行的情况下工作。每个特殊字符(如ä,ü,ö)在sqlite中都是可读的
rawdata.txt
ANSI
utf8
1条答案
按热度按时间bwleehnv1#
我确实遇到了同样的问题。我不能回答
Why is this TEXT imported as a BLOB
,但我是如何修复它的。在我的例子中,包含特殊字符(如ä,ü,ö
)的行被导入为blob。在sqlite命令提示符下,从
import_from_file.txt
读取命令文件
import_from_file.txt
如下所示根据notepad++,文件
rawdata.txt
编码为ANSI
。使用notepad++,文件转换为utf8
。在文件转换为UTF8编码后,sqlite导入可以在没有任何blob行的情况下工作。每个特殊字符(如ä,ü,ö
)在sqlite中都是可读的