Конвертировать MySQL в SQlite - PullRequest
       0

Конвертировать MySQL в SQlite

108 голосов
/ 08 октября 2010

Возможно ли преобразовать MySQL в SQLite с помощью бесплатного инструмента для Windows?

Ответы [ 19 ]

67 голосов
/ 30 марта 2012

На GitHub

есть скрипт mysql2sqlite.sh

Как описано в шапке, скрипт можно использовать так:

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite

альтернативы

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

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

Ссылка теперь недоступна, поэтому она доступна только через снимок на archive.org , последнее обновление 2011 г.

<Ч />

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

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

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

Sequel (Ruby ORM) имеет инструмент командной строки для работы с базами данных, необходимо установить ruby, затем:

  $ gem install sequel mysql2 sqlite3 
  $ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
18 голосов
/ 08 октября 2010

Не каждая схема БД может быть преобразована. MySQL является более сложным и многофункциональным, чем SQLite. Однако, если ваша схема достаточно проста, вы можете сбросить ее в файл SQL и попытаться импортировать / загрузить в базу данных SQLite.

13 голосов
/ 23 декабря 2011

С этой веб-страницы: http://osenxpsuite.net

загрузка SQLite2009 Pro Enterprise Manager

Это бесплатно. Он может импортировать данные из базы данных Mysql. Я только что преобразовал базу данных 17M. Это прекрасно.

5 голосов
/ 26 февраля 2015

Я нашел идеальное решение! посмотрите: http://www.jbip.net/content/how-convert-mysql-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
4 голосов
/ 25 февраля 2019

Я столкнулся с той же проблемой около 2 дней назад, когда мне пришлось преобразовать базу данных MySQL размером 20 ГБ + в SQLite.Это была отнюдь не простая задача, и я закончил тем, что написал этот скрипт Python , который выполняет эту работу.

Преимущество написанного на Python в том, что он кроссплатформенный (в отличие от оболочки/ bash script) и имеет только минимальные зависимости (которые могут быть легко установлены с помощью pip install).Он использует генераторы и фрагментирование обрабатываемых данных и, следовательно, очень эффективно использует память.

Я также приложил некоторые усилия, чтобы правильно преобразовал большинство типов данных из MySQL в SQLite .

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

Вот как вы его используете:

usage: mysql2sqlite.py [-h] [-f SQLITE_FILE] [-u MYSQL_USER]
                       [-p MYSQL_PASSWORD] [-d MYSQL_DATABASE]
                       [--mysql-host MYSQL_HOST] [-c CHUNK] [-l LOG_FILE]

optional arguments:
  -h, --help            show this help message and exit
  -f SQLITE_FILE, --sqlite-file SQLITE_FILE
                        SQLite3 db file
  -u MYSQL_USER, --mysql-user MYSQL_USER
                        MySQL user
  -p MYSQL_PASSWORD, --mysql-password MYSQL_PASSWORD
                        MySQL password
  -d MYSQL_DATABASE, --mysql-database MYSQL_DATABASE
                        MySQL host
  --mysql-host MYSQL_HOST
                        MySQL host
  -c CHUNK, --chunk CHUNK
                        Chunk reading/writing SQL records
  -l LOG_FILE, --log-file LOG_FILE
                        Log file
4 голосов
/ 27 августа 2016

Sqlite официально имеет список инструментов для конвертации.

http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools

4 голосов
/ 08 августа 2017

Есть разные способы сделать это.У меня также была эта проблема, и я много искал.Тогда я получил простой способ конвертировать MySql в Sqlite.

Следуйте этим инструкциям:

Шаг 1 : сначала необходимо установить SqliteDB Browser (очень маленький и быстрый для просмотра таблиц и данных)

Шаг 2 : откройте файл MySql в Блокноте, или было бы здорово, если вы откроете в Блокноте ++

Шаг 3 : Удалите первые лишние строкиИнформация или запросы и сохраните ее.

Шаг 4 : Откройте Sqlite Db Brower, создайте базу данных, затем таблицы и те же типы, что и в базе данных Mysql.

Шаг 5 : в строке меню браузера Sqlite Db выберите «Файл» -> «Импортировать сохраненный файл Mysql».

Он легко преобразуется в диалог Sqlite After Warning.

Если произошла ошибка, удалите дополнительные строки, если в вашем файле Mysql есть.

Вы также можете установить программу Mysql to Sqlite Converter на пробной основе. Но информация, которую я предоставляю для конвертации, - это время жизни.

Вы также можете проверить этот учебник для получения дополнительной справки: https://www.youtube.com/watch?v=UcAHsm9iwpw

Надеюсь, эта справка.

3 голосов
/ 10 декабря 2018

Самый простой способ конвертировать MySql DB в Sqlite:

1) Создать файл дампа sql для вашей базы данных MySql.

2) Загрузить файл в онлайн-конвертер RebaseData здесь

3) На странице появится кнопка загрузки для загрузки базы данных в формате Sqlite

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