为什么将此TEXT作为BLOB导入sqlite3

1rhkuytd  于 2023-04-21  发布在  SQLite
关注(0)|答案(1)|浏览(128)

我从一个制表符分隔的文本文件导入到sqlite3。在大多数情况下,值作为TEXT导入,但偶尔值会作为BLOB导入。这通常发生在文本中有一个稍微不寻常的符号时,例如|(管道)符号。
为什么会发生这种情况,我能做些什么?
我正在将sqlite .mode设置为tabs,没有关于文本文件编码的附加信息。
代码如下:

.open filename.sq3
.mode tabs
.import filename.tab tablename
bwleehnv

bwleehnv1#

我确实遇到了同样的问题。我不能回答Why is this TEXT imported as a BLOB,但我是如何修复它的。在我的例子中,包含特殊字符(如ä,ü,ö)的行被导入为blob。
在sqlite命令提示符下,从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中都是可读的

相关问题