Как обрабатывать символы UTF-8 при переносе с sqlite2 на sqlite3 - PullRequest
1 голос
/ 18 сентября 2008

Пытается легкий подход:

sqlite2 mydb.db .dump | sqlite3 mydb-new.db

Я получил эту ошибку:

Ошибка SQL рядом со строкой 84802: такого столбца нет: Ð

В этой строке скрипт выглядит так:

INSERT INTO vehicleulo VALUES (127548, '21K0065217', С , 'PA007808', 65217,279,1989,3,468, '1998-07-30 00: 00: 00.000000', '14 / 697 / 98-07' , 2 '', 1);

Я предполагаю, что 'С' без кавычек является проблемой .

есть идеи?

PD: Я сейчас под Windows, и я хотел бы использовать командную строку, чтобы ее можно было автоматизировать (этот процесс будет выполняться ежедневно сервером).

Ответы [ 4 ]

2 голосов
/ 14 февраля 2009

Просто откройте базу данных v2 с двоичным CLI sqlite3 и сохраните ее. Файл базы данных будет прозрачно перенесен в v3.

$ sqlite3 v2database.db
sqlite> .quit
$

Примечание: может потребоваться вставить / удалить строку перед выходом, чтобы принудительно обновить обновление.

1 голос
/ 28 июля 2009

Просто откройте базу данных v2 с двоичным CLI sqlite3 и сохраните ее. Файл базы данных будет прозрачно перенесен в v3.

Это не работает.

$sqlite3 db2
SQLite version 3.6.16
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
Error: file is encrypted or is not a database
sqlite> .q

И файл не изменился (видимо, sqlite3 не смог его прочитать). Я думаю, что исходная проблема - ошибка в sqlite2.

1 голос
/ 19 сентября 2008

Ну, никто не отвечает ... в конце я в итоге модифицирую свой оригинальный скрипт (тот, который в первую очередь создал базу данных sqlite2) для создания базы данных непосредственно в sqlite3.

Я думаю, что большой скрипт обработки строк (большой, потому что мои базы данных имеют размер 800 МБ и 200 МБ каждый) может справиться с этой задачей, но создание базы данных напрямую для меня было проще.

0 голосов
/ 18 сентября 2008

Я пытался сделать это без вмешательства Windows:

*, вызвав sqlite2 на old.db и отправив дамп непосредственно в файл

*, а затем вызовите sqlite3 для new.db и загрузите дамп непосредственно из файла.

На всякий случай, если в окнах не было символов в командной строке.

Тот же результат.

...