Преобразование MySQL в SQlite

Можно ли конвертировать из MySQL в SQLite с помощью бесплатного инструмента в windows?

Ответ 1

Существует mysql2sqlite.sh script на GitHub

Как описано в заголовке, script можно использовать следующим образом:

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite

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

Ответ 2

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

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


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

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

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

Ответ 3

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

  $ gem install sequel mysql2 sqlite3 
  $ sequel mysql2://user:[email protected]/database -C sqlite://db.sqlite

Ответ 4

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

Ответ 5

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

скачать SQLite2009 Pro Enterprise Manager

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

Ответ 6

Я нашел идеальное решение

Во-первых, вам нужен этот скрипт (поместите его в файл с именем "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

Затем создайте копию своей базы данных:

[email protected]:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile

А теперь запустите преобразование:

[email protected]:~$ mysql-to-sqlite.sh dumpfile

И если все пойдет хорошо, теперь у вас должен быть файл dumpfile.db, который можно использовать через sqlite3.

[email protected]:~$ 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

Ответ 8

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

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

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

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

Шаг 3. Удалите первые дополнительные строки. Содержит информацию или запросы и сохраните ее.

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

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

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

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

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

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

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

Ответ 9

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

Плюсом написанного на Python является то, что он кроссплатформенный (в отличие от скрипта shell/bash) и имеет только минимальные зависимости (которые можно легко установить с помощью 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

Ответ 10

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

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

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

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

Ответ 12

Мое решение этой проблемы с Mac состояло в

  • Установите Ruby и сиквел, похожие на ответ Macario. Я выполнил эту ссылку, чтобы помочь настроить Ruby, mysql и sqlite3 Настройка разработки Ruby on Rails для Mac OSX
  • Установить сиквел

    $ gem install sequel
    

    Если все еще требуется

    % gem install mysql sqlite3
    

    затем использовал следующий из документа Sequel bin_sequel.rdoc (см. Копировать базу данных)

    sequel -C mysql://myUserName:[email protected]/databaseName sqlite://myConvertedDatabaseName.sqlite
    

Пользователь windows может установить Ruby и Sequel для решения Windows.

Ответ 13

Я пробовал несколько методов в этой теме, но ничего не работало для меня. Итак, вот новое решение, которое также оказалось очень простым:

  • Установите RazorSQL. Работает для Mac, Windows и Linux.
  • В RazorSQL подключитесь к своей базе данных, например, на localhost. Конверсия не работает с файлами sql dump.
  • Щелкните правой кнопкой мыши по базе данных → Преобразование базы данных → выберите SQLite. Это сохранит txt файл со всеми запросами sqlite, необходимыми для создания этой базы данных.
  • Установите диспетчер баз данных SQLite, например Браузер DB для SQLite. Он работает на любой ОС.
  • Создайте пустую базу данных, перейдите на вкладку "Выполнение SQL" и вставьте содержимое с шага 3.

Что это, теперь у вас есть база данных SQLite.

Ответ 14

Если у вас есть опыт, пишите простые скрипты с помощью Perl\Python\etc и конвертируйте MySQL в SQLite. Прочитайте данные из Mysql и напишите на SQLite.

Ответ 15

Мне нравится SQLite2009 Pro Enterprise Manager, предложенный Jfly. Однако:

  • Тип данных MySQL INT не преобразован в тип данных SQlite INTEGER (работает с DBeaver)

  • Он не импортирует внешние ключи из MySQL (я не смог найти инструмент, который поддерживает передачу ограничений внешнего ключа от MySQL до SQlite.)

Ответ 16

Из список инструментов конвертера Я нашел Kexi. Это инструмент пользовательского интерфейса для импорта с различных серверов БД (включая MySQL) в SQLite. При импорте некоторой базы данных (скажем, из MySQL) она хранит ее в формате Kexi. Формат Kexi - это "родной" формат SQLite. Так просто скопируйте файл kexi и сохраните свои данные в формате sqlite

Ответ 17

Если вы получили файл базы данных и не установили правильный сервер (SQLite или MySQL), попробуйте этот инструмент: https://dbconvert.com/sqlite/mysql/ Пробная версия позволяет конвертировать первые 50 записей каждой таблицы, остальная часть данных - с водяными знаками. Это программа для Windows и может либо сбрасываться на работающий сервер базы данных, либо выгружать вывод в файл .sql.

Ответ 18

Не программный ответ, но он сэкономил мне много времени. Конвертер SQL в SQLite

Здесь я смог преобразовать БД, которая содержит 33 таблицы. Заняло около минуты.

  • Мой процесс должен был сбросить (экспортировать) мою базу данных MySQL.
  • Затем импортируйте его, используя сайт, упомянутый выше.
  • Он подготовил для меня sqlite db data.sqlite, а затем я просто открыл его в браузере SQLite.

Ответ 19

Вы можете конвертировать MySQL DB в SQLite3, используя следующий скрипт: -

#!/bin/sh

mysqldump --compact --compatible=ansi --default-character-set=binary mydbname |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
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;
}
' |
sqlite3 output.db

Другой простой способ преобразования базы данных MySQL в SQLite - использование инструмента конвертации базы данных, который может напрямую выбирать файл базы данных конкретной базы данных и обеспечивать предварительный просмотр конвертируемых таблиц, а после преобразования будет напрямую сохранять данные в указанной базе данных, установленной на ваша система. Вы можете получить бесплатную версию этого программного обеспечения, выполнив поиск Stellar Converter for Database в Google.