Ответы:
На GitHub есть скрипт mysql2sqlite.sh
Как описано в шапке, скрипт можно использовать так:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
альтернативы
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
илиman mysqldump
Вот это список преобразователей . ( снимок на archive.today )
Альтернативный метод, который будет работать даже в Windows, но редко упоминается: используйте класс ORM, который абстрагирует для вас конкретные различия в базе данных. например, вы получаете их в PHP ( RedBean ), Python (уровень ORM Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) и т. д.
то есть вы можете сделать это:
В Sequel (Ruby ORM) есть инструмент командной строки для работы с базами данных, у вас должен быть установлен ruby, затем:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
иgem install sqlite3
gem install pg
если вы хотите конвертировать из или в базу данных postgres, сиквел должен иметь адаптеры для основных баз данных
mysql
на, mysql2
если вы используетеmysql2
ruby-dev
пакет для сборки этих собственных пакетов gem.
Не каждую схему БД можно преобразовать. MySQL более сложный и многофункциональный, чем SQLite. Однако, если ваша схема достаточно проста, вы можете сбросить ее в файл SQL и попытаться импортировать / загрузить в базу данных SQLite.
Я столкнулся с той же проблемой около двух дней назад, когда мне пришлось преобразовать базу данных MySQL размером более 20 ГБ в SQLite. Это была непростая задача, и в итоге я написал этот пакет Python, который выполняет эту работу.
Плюс его написания на Python заключается в том, что он кроссплатформенный (в отличие от сценария оболочки / bash) и может быть легко установлен с помощью pip install
(даже в Windows). Он использует генераторы и фрагменты обрабатываемых данных и поэтому очень эффективно использует память.
Я также приложил некоторые усилия, чтобы правильно перевести большинство типов данных из MySQL в SQLite .
Инструмент также тщательно протестирован и работает на Python 2.7 и 3.5+ .
Он вызывается из командной строки, но также может использоваться как стандартный класс Python, который можно включить в более крупную оркестровку Python.
Вот как вы это используете:
Usage: mysql2sqlite [OPTIONS]
Options:
-f, --sqlite-file PATH SQLite3 database file [required]
-d, --mysql-database TEXT MySQL database name [required]
-u, --mysql-user TEXT MySQL user [required]
-p, --mysql-password TEXT MySQL password
-h, --mysql-host TEXT MySQL host. Defaults to localhost.
-P, --mysql-port INTEGER MySQL port. Defaults to 3306.
-c, --chunk INTEGER Chunk reading/writing SQL records
-l, --log-file PATH Log file
-V, --vacuum Use the VACUUM command to rebuild the SQLite
database file, repacking it into a minimal amount
of disk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQL
database. This can be useful in situations where
multiple queries, with small result sets, need to
be combined or computed with each other.
--help Show this message and exit.
.sql
файлом дампа или требуется подключение к установленной базе данных MySQL?
В Sqlite есть официальный список инструментов для конвертации.
Самый простой способ конвертировать MySql DB в Sqlite:
1) Создайте файл дампа sql для вашей базы данных MySql.
2) Загрузите файл в онлайн-конвертер RebaseData здесь
3) На странице появится кнопка загрузки для загрузки базы данных в формате Sqlite.
Я нашел идеальное решение
Во-первых, вам понадобится этот скрипт (поместите его в файл с именем mysql-to-sqlite.sh):
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
echo "Conversion completed without error. Output file: $1.db"
rm $1.sql
rm $1.err
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
Затем скопируйте копию своей базы данных:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
А теперь запустим преобразование:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
И если все пойдет хорошо, теперь у вас должен быть dumpfile.db, который можно использовать через sqlite3.
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
Есть разные способы сделать это. У меня тоже была эта проблема, я много искал, а потом получил простой способ конвертировать MySQL в SQLite.
Следуй этим шагам:
Сначала вам нужно установить браузер SQLite DB (очень маленький и быстрый для просмотра таблиц и данных)
Откройте файл MySQL в Блокноте, или было бы здорово, если бы вы открыли его в Блокноте ++.
Удалить первые лишние строки, содержащие информацию или запросы, и сохранить их.
Откройте браузер базы данных SQLite, создайте базу данных, затем таблицы и те же типы, что и в базе данных MySQL.
В строке меню браузера БД SQLite выберите Файл-> затем Импортировать файл данных MySQL, который вы сохранили.
Он легко преобразуется в SQLite после диалогового окна предупреждения.
В случае ошибки удалите лишние строки, если в вашем файле MySQL есть.
Вы также можете установить программное обеспечение преобразователя MySQL в SQLite на пробной основе, но информация, которую я даю для преобразования, - это время жизни.
Мое решение этой проблемы на Mac заключалось в
Установить продолжение
$ gem install sequel
Если еще требуется
% gem install mysql sqlite3
затем использовал следующее, основанное на документе Sequel bin_sequel.rdoc (см. Копирование базы данных)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Окна пользователь может установить Ruby , и Sequel для решения окна.
Я попробовал несколько методов в этой теме, но у меня ничего не помогло. Итак, вот новое решение, которое я тоже нашел очень простым:
sqlite
запросами, необходимыми для создания этой базы данных.Вот и все, теперь у вас есть база данных SQLite.
Мне нравится SQLite2009 Pro Enterprise Manager, предложенный Jfly. Тем не мение:
Тип данных MySQL INT не преобразуется в тип данных SQlite INTEGER (работает с DBeaver).
Он не импортирует константы внешнего ключа из MySQL (я не смог найти ни одного инструмента, поддерживающего перенос ограничений внешнего ключа из MySQL в SQlite.)
Из списка инструментов конвертера я нашел Kexi . Это инструмент пользовательского интерфейса для импорта с различных серверов БД (включая MySQL) в SQLite. При импорте некоторой базы данных (скажем, из MySQL) он сохраняет ее в формате Kexi. Формат Kexi - это «родной» формат SQLite. Так что просто скопируйте файл kexi и сохраните данные в формате sqlite.
Если вам предоставили файл базы данных и вы не установили правильный сервер (SQLite или MySQL), попробуйте этот инструмент: https://dbconvert.com/sqlite/mysql/ Пробная версия позволяет преобразовать первые 50 записей каждой таблицы , остальные данные помечены водяными знаками. Это программа для Windows, которая может либо выгружать на работающий сервер базы данных, либо выгружать вывод в файл .sql.