web-dev-qa-db-ja.com

MySQLをSQliteに変換する

Windowsで無料のツールを使用してMySQLからSQLiteに変換することは可能ですか?

111
mullek

GitHub にmysql2sqlite.shスクリプトがあります

ヘッダーで説明したように、スクリプトは次のように使用できます。

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite

代替案

70
David LeBauer

コンバーターのリストは次のとおりです。

リンクは現在ダウンしているように見えるため、 snapshot at archive.org 、最終更新2011を介してのみ使用可能です。


Windowsでも機能するがめったに言及されない代替方法は、特定のデータベースの違いを抽象化するORMクラスを使用することです。例えばこれらはPHP( RedBean )、Python(DjangoのORMレイヤー、 StormSqlAlchemy で取得します=)、Ruby on Rails( ActiveRecord )、Cocoa( CoreData )など.

つまり、これを行うことができます:

  1. ORMクラスを使用してソースデータベースからデータをロードします。
  2. データをメモリに保存するか、ディスクにシリアル化します。
  3. ORMクラスを使用して、宛先データベースにデータを保存します。
52

Sequel(Ruby ORM)には、データベースを処理するためのコマンドラインツールがあり、Rubyをインストールする必要があります。

  $ gem install sequel mysql2 sqlite3 
  $ sequel mysql2://user:password@Host/database -C sqlite://db.sqlite
42
Macario

すべてのDBスキーマを変換できるわけではありません。 MySQLはSQLiteよりも複雑で機能が豊富です。ただし、スキーマが十分に単純な場合は、それをSQLファイルにダンプし、それをインポートしてSQLite DBにロードすることができます。

18
Assaf Lavie

このWebページから: http://osenxpsuite.net

ダウンロードSQLite2009 Pro Enterprise Manager

無料です。 Mysqlデータベースからデータをインポートできます。 17Mデータベースを変換しました。それは完璧です。

13
Jfly

私は完璧な解決策を見つけました!ご覧ください: 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
5
Paulo Luan

Sqliteには公式に変換ツールのリストがあります。

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

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
4
techouse

これを行うにはさまざまな方法があります。私もこの問題を抱えていて、たくさん検索しました。次に、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

このヘルプを願っています。

4
Uzair Qaiser

MySql DBをSqliteに変換する最も簡単な方法:

1)MySqlデータベースのSQLダンプファイルを生成します。

2)ファイルをRebaseDataオンラインコンバーターにアップロードします here

3)SQLite形式でデータベースをダウンロードするためのダウンロードボタンがページに表示されます

3
Sandeep Yohans

Macを実行するこの問題に対する私の解決策は

  1. Macarioの答えに似たRubyと続編をインストールします。このリンクに従って、Ruby、mysql、sqlite3のセットアップを支援しました Ruby on Rails Mac OSXの開発セットアップ
  2. 続編をインストールする

    $ 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をインストールできます。

1
Grant Luck

MySQL WorkBenchのこのプラグインを見つけました:

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

1
David Benko

このスレッドでいくつかのメソッドを試しましたが、うまくいきませんでした。そこで、ここに新しいソリューションがありますが、これも非常にシンプルであることがわかりました。

  1. RazorSQL をインストールします。 Mac、Windows、Linuxで動作します。
  2. RazorSQLで、たとえばlocalhost上のデータベースに接続します。変換は、SQLダンプファイルでは機能しません。
  3. データベースを右クリック->データベース変換-> SQLiteを選択します。これにより、このデータベースの作成に必要なすべてのsqliteクエリを含むtxtファイルが保存されます。
  4. SQLiteのDBブラウザー のようなSQLiteデータベースマネージャーをインストールします。どのOSでも動作します。
  5. 空のデータベースを作成し、[SQLの実行]タブに移動して、手順3の内容を貼り付けます。

これで、SQLiteデータベースが作成されました。

1
Vali Munteanu

Jflyが提案したSQLite2009 Pro Enterprise Managerが気に入っています。しかしながら:

  • MySQLデータ型INTはSQliteデータ型INTEGERに変換されません(DBeaverで動作します)

  • MySQLから外部キー制約をインポートしません(MySQLからSQliteへの外部キー制約の転送をサポートするツールが見つかりませんでした。)

0
Stefan

データベースファイルが与えられていて、正しいサーバー(SQLiteまたはMySQL)がインストールされていない場合は、このツールを試してください。 https://dbconvert.com/sqlite/mysql/ 試用版では変換が可能です各テーブルの最初の50レコードには、残りのデータに透かしが入ります。これはWindowsプログラムであり、実行中のデータベースサーバーにダンプするか、出力を.sqlファイルにダンプできます。

0
kurdtpage

経験がある場合は、Perl\Python\etcで簡単なスクリプトを作成し、MySQLをSQLiteに変換してください。 Mysqlからデータを読み取り、SQLiteに書き込みます。

0
Evgeniy

非プログラム的な答えですが、それは私のために多くの時間を節約しました。 SQL to SQLiteコンバーター

ここで、33個のテーブルを含むDBを変換できました。約1分かかりました。

  • 私のプロセスは、MySQLデータベースをダンプ(エクスポート)することでした。
  • 次に、上記のサイトを使用してインポートします。
  • Data.sqliteのためにsqlite dbを準備し、それをSQLiteブラウザーで開きました。
0
FabricioG

コンバータツールのリスト から Kexi が見つかりました。これは、さまざまなDBサーバー(MySQLを含む)からSQLiteにインポートするためのUIツールです。 (MySQLなどから)データベースをインポートする場合、Kexi形式で保存します。 Kexi形式は、「ネイティブ」のSQLite形式です。そのため、単純にkexiファイルをコピーし、データをsqlite形式で保持します

0
Tushar Goswami