Відповіді:
На 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
Ось це список перетворювачів . ( знімок в архіві.today )
Альтернативний метод, який би працював навіть у Windows, але його рідко згадують: використовувати клас ORM, який дозволяє абстрагувати певні відмінності баз даних. наприклад, ви отримуєте їх у PHP ( RedBean ), Python (шар ORM Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), какао ( CoreData ) тощо.
тобто ви могли це зробити:
Sequel (Ruby ORM) має інструмент командного рядка для роботи з базами даних, у вас повинен бути встановлений рубін, а потім:
$ 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 db, у продовженнях повинні бути адаптери для великих db's
mysqlз , mysql2якщо ви використовуєтеmysql2
ruby-devпакет для створення цих початкових пакетів дорогоцінних каменів.
Не кожну схему БД можна перетворити. MySQL є більш складним і багатим на функції, ніж SQLite. Однак якщо ваша схема є досить простою, ви можете скинути її у файл SQL і спробувати імпортувати / завантажити її в БД SQLite.
Я зіткнувся з тією ж проблемою близько 2 днів тому, коли мені довелося конвертувати 20 ГБ + базу даних MySQL в 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 DB Виберіть «Файл»> «Імпортуйте файл MySQL», який ви зберегли.
Він легко перетвориться в діалогове вікно після попередження.
Якщо помилка, тоді видаліть більше зайвих рядків, якщо ваш файл MySQL є.
Ви також можете встановити MySQL до програмного забезпечення SQLite Converter на пробній основі, але інформація, яку я надаю для перетворення, - це час життя.
Моє рішення цієї проблеми під керуванням Mac було
Встановити продовження
$ gem install sequel
Якщо все-таки потрібно
% gem install mysql sqlite3
потім використано наступне на основі документа Sequel doc bin_sequel.rdoc (див. Копіювати базу даних)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqliteКористувач Windows може встановити Ruby і Sequel для рішення Windows.
Я спробував декілька методів на цій темі, але мені нічого не вийшло. Тож ось нове рішення, яке я також вважав дуже простим:
sqliteзапитами, необхідними для створення цієї бази даних.Це все, тепер у вас є ваша база даних SQLite.
Мені подобається менеджер SQLite2009 Pro Enterprise, запропонований Jfly. Однак:
Тип даних MySQL INT не перетворений у тип даних INTEGER SQlite (працює з DBeaver)
Він не імпортує вмісти іноземних ключів з MySQL (я не зміг знайти жодного інструменту, який підтримує перенесення обмежень іноземних ключів з MySQL до SQlite.)
Зі списку інструментів перетворювача я знайшов Kexi . Це інструмент інтерфейсу для імпорту з різних серверів БД (включаючи MySQL) у SQLite. При імпорті деякої бази даних (скажімо, з MySQL) вона зберігає її у форматі Kexi. Формат Kexi - це "рідний" формат SQLite. Тому просто скопіюйте файл kexi і отримайте свої дані у форматі sqlite
Якщо вам дали файл бази даних і не встановили правильний сервер (або SQLite, або MySQL), спробуйте цей інструмент: https://dbconvert.com/sqlite/mysql/ Пробна версія дозволяє конвертувати перші 50 записів кожної таблиці , решта даних є водяними знаками. Це програма Windows, яка може або перевантажуватися на працюючий сервер бази даних, або вивантажувати вихід у файл .sql