Как лучше всего преобразовать базу данных mysql в базу данных sqlite?

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

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

Ответов (4)

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

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

 [email protected]~$ mysqldump old-database > old-database-dump.sql
 [email protected]~$ sqlite3 -init old-database-dump.sql new-database

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

ОБНОВИТЬ:

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

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

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

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

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

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


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

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

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