Windowsで無料のツールを使用してMySQLからSQLiteに変換することは可能ですか?
GitHub にmysql2sqlite.shスクリプトがあります
ヘッダーで説明したように、スクリプトは次のように使用できます。
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
代替案
コンバーターのリストは次のとおりです。
リンクは現在ダウンしているように見えるため、 snapshot at archive.org 、最終更新2011を介してのみ使用可能です。
Windowsでも機能するがめったに言及されない代替方法は、特定のデータベースの違いを抽象化するORMクラスを使用することです。例えばこれらはPHP( RedBean )、Python(DjangoのORMレイヤー、 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
すべてのDBスキーマを変換できるわけではありません。 MySQLはSQLiteよりも複雑で機能が豊富です。ただし、スキーマが十分に単純な場合は、それをSQLファイルにダンプし、それをインポートしてSQLite DBにロードすることができます。
このWebページから: http://osenxpsuite.net
ダウンロードSQLite2009 Pro Enterprise Manager
無料です。 Mysqlデータベースからデータをインポートできます。 17Mデータベースを変換しました。それは完璧です。
私は完璧な解決策を見つけました!ご覧ください: 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
そして、すべてがうまくいけば、sqlite3経由で使用できるdumpfile.dbがあるはずです。
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
Sqliteには公式に変換ツールのリストがあります。
20GB以上のMySQLデータベースをSQLiteに変換しなければならなかった約2日前に同じ問題に直面しました。それは決して簡単な仕事ではなく、私は this Python script を書くことになりました。
Pythonで記述されていることの利点は、(シェル/ 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
これを行うにはさまざまな方法があります。私もこの問題を抱えていて、たくさん検索しました。次に、MySqlをSqliteに変換する簡単な方法を得ました。
これらの指示に従ってください:
ステップ1:最初にSqliteDB Browserをインストールする必要があります(テーブルとデータを表示するには非常に小さくて高速です)
ステップ2:メモ帳でMySqlファイルを開くか、Notepad ++で開くと便利です
ステップ3:情報またはクエリを含む最初の余分な行を削除して保存します。
ステップ4:Sqlite Db Browerを開き、データベースを作成し、次にテーブル、Mysqlデータベースと同じタイプを選択します。
ステップ5:Sqlite Dbブラウザのメニューバーで[ファイル]-> [保存したdat Mysqlファイルのインポート]を選択します。
警告ダイアログの後、簡単にSqliteに変換されます。
エラーの場合、Mysqlファイルがあれば余分な行を削除します。
試用ベースでMysql to Sqlite Converter Softwareをインストールすることもできますが、変換のために提供している情報は寿命です。
また、このチュートリアルでヘルプを確認することもできます。 https://www.youtube.com/watch?v=UcAHsm9iwpw
このヘルプを願っています。
MySql DBをSqliteに変換する最も簡単な方法:
1)MySqlデータベースのSQLダンプファイルを生成します。
2)ファイルをRebaseDataオンラインコンバーターにアップロードします here
3)SQLite形式でデータベースをダウンロードするためのダウンロードボタンがページに表示されます
Macを実行するこの問題に対する私の解決策は
続編をインストールする
$ gem install sequel
それでも必要な場合
% gem install mysql sqlite3
次に、Sequel doc bin_sequel.rdoc に基づいて以下を使用しました(データベースのコピーを参照)
sequel -C mysql://myUserName:myPassword@Host/databaseName sqlite://myConvertedDatabaseName.sqlite
windowsユーザーは、WindowsソリューションのRubyおよびSequelをインストールできます。
MySQL WorkBenchのこのプラグインを見つけました:
http://www.henlich.de/software/sqlite-export-plugin-for-mysql-workbench/
このスレッドでいくつかのメソッドを試しましたが、うまくいきませんでした。そこで、ここに新しいソリューションがありますが、これも非常にシンプルであることがわかりました。
sqlite
クエリを含むtxtファイルが保存されます。これで、SQLiteデータベースが作成されました。
Jflyが提案したSQLite2009 Pro Enterprise Managerが気に入っています。しかしながら:
MySQLデータ型INTはSQliteデータ型INTEGERに変換されません(DBeaverで動作します)
MySQLから外部キー制約をインポートしません(MySQLからSQliteへの外部キー制約の転送をサポートするツールが見つかりませんでした。)
データベースファイルが与えられていて、正しいサーバー(SQLiteまたはMySQL)がインストールされていない場合は、このツールを試してください。 https://dbconvert.com/sqlite/mysql/ 試用版では変換が可能です各テーブルの最初の50レコードには、残りのデータに透かしが入ります。これはWindowsプログラムであり、実行中のデータベースサーバーにダンプするか、出力を.sqlファイルにダンプできます。
経験がある場合は、Perl\Python\etcで簡単なスクリプトを作成し、MySQLをSQLiteに変換してください。 Mysqlからデータを読み取り、SQLiteに書き込みます。
非プログラム的な答えですが、それは私のために多くの時間を節約しました。 SQL to SQLiteコンバーター
ここで、33個のテーブルを含むDBを変換できました。約1分かかりました。
コンバータツールのリスト から Kexi が見つかりました。これは、さまざまなDBサーバー(MySQLを含む)からSQLiteにインポートするためのUIツールです。 (MySQLなどから)データベースをインポートする場合、Kexi形式で保存します。 Kexi形式は、「ネイティブ」のSQLite形式です。そのため、単純にkexiファイルをコピーし、データをsqlite形式で保持します