У меня есть этот файл, который имеет непечатаемые символы (Я сохранил его в UTF-8 формате): https://dl.dropboxusercontent.com/u/110553980/mifile.txtКак импортировать файл с непечатаемыми символами с помощью SQLite?
Тогда я хотел бы загрузить его в БД SQLite этим способом (после этого наконечника I» ве найдено: 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-скрипт, потому что реальный файл, который я хочу загрузить, имеет более 2000000 записей, поэтому производительность - очень важный момент.
Sqlite3 не позволяет использовать многобайтовые входные разделители (по крайней мере, в последних версиях); однако код, похоже, не заботится о символах, отличных от ascii. Какую версию вы используете? – rici
Я использую версию 3.6.20. Если один байтовый разделитель (и адаптируйте файл), у меня есть строка 1: ожидается 39 столбцов данных, но найдено 24. – harrison4
Нулевой символ не допускается в текстовых значениях. '.import' не работает с произвольными двоичными данными. Почему для двоичных столбцов используется VARCHAR? –