Каков наилучший способ преобразования базы данных mysql в sqlite? - PullRequest
20 голосов
/ 10 августа 2008

В настоящее время у меня есть относительно небольшая (4 или 5 таблиц, 5000 строк) база данных MySQL, которую я хотел бы преобразовать в базу данных sqlite. Поскольку мне, возможно, придется делать это не раз, я был бы признателен, если бы кто-нибудь мог порекомендовать какие-либо полезные инструменты или хотя бы какой-либо легко реплицируемый метод.

(у меня есть полный доступ администратора к базе данных / машинам.)

Ответы [ 4 ]

5 голосов
/ 10 августа 2008

Мне приходилось делать подобные вещи несколько раз. Самым простым подходом для меня было написание сценария, который извлекает данные из одного источника данных и создает выходные данные для нового источника данных. Просто выполните запрос SELECT * для каждой таблицы в вашей текущей базе данных, а затем выведите все строки в запрос INSERT INTO для вашей новой базы данных. Вы можете выгрузить это в файл или передать прямо в интерфейс базы данных.

Это не красиво, но, честно говоря, вряд ли это вызывает серьезную озабоченность в отношении подобных вещей. Эту технику быстро написать, и она работает. Это мои основные критерии для таких вещей.

Возможно, вы захотите проверить эту ветку . Похоже, пара человек уже собрала в основном то, что вам нужно. Я не слишком углублялся в это, так что никаких гарантий.

2 голосов
/ 14 мая 2011

Вот список конвертеров:

<ч /> Альтернативный метод, который будет работать хорошо, но редко упоминается: используйте класс ORM, который абстрагирует вас от конкретных различий в базе данных. например Вы получаете их в PHP ( RedBean ), Python (слой ORM Джанго, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ) , Какао ( CoreData )

т.е. Вы могли бы сделать это:

  1. Загрузка данных из исходной базы данных с использованием класса ORM.
  2. Хранить данные в памяти или сериализовать на диск.
  3. Сохранение данных в исходной базе данных с использованием класса ORM.
2 голосов
/ 10 августа 2008

До тех пор, пока файл дампа MySQL не превышает язык запросов SQLite , вы сможете легко мигрировать:

 tgl@moto~$ mysqldump old-database > old-database-dump.sql
 tgl@moto~$ sqlite3 -init old-database-dump.sql new-database

Я сам не пробовал.

UPDATE:

Похоже, вам нужно будет сделать пару изменений в дампе MySQL. Я бы использовал sed, или Google для этого.

Только синтаксис комментария, auto_increment & TYPE = объявление и escape-символы различаются.

1 голос
/ 10 августа 2008

Если это всего лишь несколько таблиц, вы, вероятно, могли бы написать это в своем предпочтительном языке сценариев и сделать все это к тому времени, которое потребуется, чтобы прочитать все ответы или найти подходящий инструмент. Я бы в любом случае. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...