我有這個文件,它具有非打印字符(我在UTF-8格式保存它): https://dl.dropboxusercontent.com/u/110553980/mifile.txt如何使用SQLite導入帶有不可打印字符的文件?
然後我想通過這種方式將其加載到SQLite的DB(以下這個提示我」已經找到:Check the encoding of text in SQlite):
PRAGMA encoding = "UTF-8";
CREATE TABLE t (
NUMERO_REGISTRO INTEGER
, RW_FECHA1 TEXT
, RW_EMISOR1 TEXT
, RW_IAMAT TEXT
, RW_GRUPO TEXT
, RW_NOMIAT TEXT
, RW_GAASADES1 TEXT
, RW_PAISDEST1 TEXT
, RW_MARCA_ALTO_ING TEXT
, RW_IBTACU_ACT TEXT
, RW_IBACU_ACT TEXT
, RW_IIBACU_ACT TEXT
, RW_IINACU_ACT TEXT
, RW_IBTACU_ANT TEXT
, RW_IBACU_ANT TEXT
, RW_IIBACU_ANT TEXT
, RW_IINACU_ANT TEXT
, RW_MARCA_CRECI TEXT
, RW_MARCA_ACU TEXT
, RW_DELE_EMI TEXT
, RW_DISTRITO TEXT
, RW_DIREMI TEXT
, RW_POBEMI TEXT
, RW_PROVINCIA TEXT
, RW_DELEGACION_ACU TEXT
, RW_DISTRITO_ACU TEXT
, RW_ZONA_VENTA_ACU TEXT
, RW_VENDEDOR_ACU TEXT
, RW_CONTRATO TEXT
, RW_NRO_SERIE TEXT
, RW_OD_ACT TEXT
, RW_OD_ANT TEXT
, RW_OD_N1_ACT TEXT
, RW_OD_N1_ANT TEXT
, RW_OD_N2_ACT TEXT
, RW_OD_N2_ANT TEXT
, RW_JB TEXT
, RW_CIA TEXT
, RW_SPAM TEXT
);
.separator 'ww'
.import /home/llami/mifile.txt TABLA
但它返回當我運行它在我的RedHat Linux服務器如下:
$ sqlite3 dbname.db < /home/llami/loadit.sql
Error: /home/llami/mifile.txt line 1: expected 39 columns of data but found 10
我覺得是becouse它無法讀取特殊字符並以某種方式將它們解釋爲記錄的結尾。
我怎樣才能導入這個文件?我不喜歡插入到sql腳本的替代方案,因爲我要加載的實際文件有超過2.000.000條記錄,所以性能是非常重要的一點。
Sqlite3不允許多字節輸入分隔符(至少在最近的版本中);但是代碼似乎並不關心非ascii字符。你正在使用哪個版本? – rici
我使用的是3.6.20版本。如果一個字節分隔符(並修改文件),我有'行1:預期的39列數據,但發現24'。 – harrison4
文本值中不允許空字符。 '.import'不適用於任意的二進制數據。爲什麼使用VARCHAR作爲二進制列? –