Как лучше всего преобразовать базу данных mysql в базу данных sqlite?
В настоящее время у меня есть относительно небольшая (4 или 5 таблиц, 5000 строк) база данных MySQL, которую я хотел бы преобразовать в базу данных sqlite. Поскольку мне потенциально придется делать это более одного раза, я был бы признателен, если бы кто-нибудь мог порекомендовать какие-либо полезные инструменты или, по крайней мере, любой легко воспроизводимый метод.
(У меня есть полный доступ администратора к задействованной базе данных / машинам.)
Ответов (4)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 )
то есть вы могли бы сделать это:
- Загрузите данные из исходной базы данных с помощью класса ORM.
- Храните данные в памяти или сериализуйте на диск.
- Храните данные в исходной базе данных с помощью класса ORM.