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

103

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

Теги:

17 ответов

60

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

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

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite

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

  • 7
    Работает как шарм! Вот немного документации: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite sqlite3 $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite gist.github.com/943776
  • 0
    +1. Спасибо, это сработало и для меня. :)
Показать ещё 7 комментариев
47

Вот список преобразователей:

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


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

то есть. вы можете сделать это:

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

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

  $ gem install sequel mysql2 sqlite3 
  $ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
  • 1
    Не забудьте gem install mysql и gem install sqlite3
  • 1
    и gem install pg если вы хотите конвертировать из или в базу данных postgres, у сиквела должны быть адаптеры для основных баз данных.
Показать ещё 14 комментариев
16

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

13

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

скачать SQLite2009 Pro Enterprise Manager

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

  • 2
    Эта ссылка отображается только для окон.
  • 2
    Не могли бы вы предоставить больше информации о том, как выполняется импорт? По данным сайта, он импортирует данные только с MSAccess и MS-SQL сервера. @ user407749: Это то, о чем просил оригинальный вопрос.
Показать ещё 4 комментария
5

Я нашел идеальное решение! посмотрите: 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
3

Существуют разные способы сделать это. У меня также была эта проблема, и я обыскал много. Затем я получил простой способ конвертировать 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

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

  • 0
    Это работало нормально, если у ваших данных нет таких символов, как апостроф. Например, «Это книга Петра» в sql dumb будет «Это книга Петра». Это заставит DB Browser выдавать ошибку, для больших данных это трудно удалить. Но если вы импортируете данные из phpAdmin как CSV в DB Browser, этот импорт будет успешным. Надеюсь это поможет
2

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

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

1

Мое решение этой проблемы с 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:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
    

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

  • 0
    Как я могу скопировать только одну таблицу из БД, а не всю базу данных MySQL?
  • 0
    Для одного стола в прошлом я сделал это, но может быть лучший способ. Экспортируйте таблицу как csv, отметив имена столбцов в первой строке. Затем, используя DB Browser для SQLite, импортируйте таблицу в мою существующую базу данных sqlite с помощью опции import table from csv. Затем вам, вероятно, придется войти и изменить поля в соответствии с требуемым типом, так как я считаю, что все поля будут установлены в TEXT. В проекте, над которым я работал, мы разработали процесс, в котором мы сделали вызов API, чтобы вернуть все данные в таблицу, а затем вставили / заменили данные в базе данных приложений.
Показать ещё 1 комментарий
1

Нашел этот плагин для MySQL WorkBench:

http://www.henlich.de/software/sqlite-export-plugin-for-mysql-workbench/

0

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

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

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

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

0

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

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

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

  • 0
    RazorSQL, похоже, просто создает «общий» * .sql-файл с определениями таблиц и вставками данных, но ничего особенного для SQLite. Он не экспортировал Views, что является большим минусом. Клиент mysqldump, который поставляется с MySql, также экспортирует представления, но он также производит много условных вещей и т. Д., Которые SQLite не будет переваривать.
0

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

0

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

0

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

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

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

0

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

-4

Это простой конвертер: http://mysql2sqlite.felipemarques.com.br/ (сайт находится на бразильском португальском языке)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню