четверг, 15 ноября 2012 г.

Перенос данных из sqlite в mysql

sqlite позволяет легко сдампить содержимое бд в файл - для этого используется команда .dump.

Попытка сразу экпортировать этот файл в mysql гарантированно завершится ошибками.

Причина в том, что синтаксис sql - запросов несколько отличается у этих субд.

Таким образом дамп необходимо преобразовать к виду, пригодному для загрузки в mysql.

Кроме того, может возникнуть проблема с целочисленными PRIMARY KEY после эскпорта, которая будет сопровождаться сообщением типа 'Duplicate entry '0' for key 'PRIMARY''

Причина в том, что в дампе запросы CREATE TABLE не содержат опции AUTO_INCREMENT для PRIMARY_KEY полей. В итоге данные залиты, приложение/сайт работает на чтение, но при попытке что-либо сохранить возникает такая ошибка.

Тут можно либо модифицировать соответствующие поля, добавив им эту опцию. Либо допилить дамп, добавив в него AUTO_INCREMENT для нужных полей

  `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY

и после этого пересоздать и перезалить базу.


Если кому нужен скрипт для конвертации sqlite-формата в mysql - обращайтесь. Поделюсь с удовольствием.


Комментариев нет:

Отправить комментарий

Если Вы нашли ошибку у автора, у Вас есть вопрос или просто хотите поделиться чем-то полезным, то пишите - не стесняйтесь..