なぜ SQL を DB に変換するのですか?
.sql ファイルは SQL ステートメントとスキーマ定義のプレーンテキストスクリプトであり、それ自体はデータベースではありません。.db は、アプリが直接クエリできるバイナリの SQLite 3 データベースです。アプリケーションへの組み込みや、サーバーなしでの配布のために、自己完結型でポータブルなデータベースを取得するために変換が行われます。
SQL から DB への変換方法
DB Browser for SQLite FREE
«ファイル» > «インポート» > «SQL ファイルからデータベースをインポート» に進み、.sql を選択すると、DB Browser がステートメントを実行し、結果を .db として保存します。
DBeaver FREE
新しい .db ファイルを指す SQLite 接続を作成し、SQL エディタで .sql を開き、«SQL スクリプトの実行» を行います。
sqlite3 OPEN-SOURCE
ターミナルで sqlite3 new.db < file.sql を実行すると、ワンステップで .db を作成できます。
SQL を変換するプログラム
これらの形式について
SQL ファイルは、スキーマ定義、INSERT 文、またはクエリを含む SQL コマンドが記述されたプレーンテキストファイルです。内容を確認するには任意のテキストエディタで開き、使用するには DBeaver、MySQL Workbench、またはコマンドラインの mysql < file.sql…
.SQL の詳細を開く →.dbファイルは、ほとんどの場合SQLiteデータベースです。これは、Androidアプリ、ブラウザ、デスクトッププログラムがデータを保存するために使用するシングルファイル形式です。無料のDB Browser for SQLite(Windows/macOS/Linux)またはsqlite3コマンドラインで開くことができます。ファイルが «SQLite format 3»…
.DB の詳細を開く →品質と注意点
- 方言の不一致が主な落とし穴です。MySQL のダンプは、SQLite が拒否する
AUTO_INCREMENT、バックティックによる引用、ENGINE=InnoDB句などを使用しています。 - ストアドプロシージャとイベントは SQLite ではサポートされていません。これらのステートメントはエラーになるため、インポート前に削除する必要があります。
- 標準的な
CREATE TABLEおよびINSERTステートメントはきれいに転送されます。MySQL/PostgreSQL 固有の構文は、まず SQLite 相当のものに置き換える必要があります。
よくある質問
MySQL のダンプは SQLite で動作しますか?
AUTO_INCREMENT、バックティック識別子、ENGINE=InnoDB 句を使用します。インポート前にこれらを編集または削除してください。生成された .db ファイルはすぐにアプリで使用できますか?
.db は標準の SQLite 3 バイナリファイルであり、SQLite 互換のライブラリやアプリであれば直接開くことができます。インポートでエラーが発生した場合はどうすればよいですか?
.sql を開き、失敗している行を見つけ、サポートされていない構文を削除または置換してから、インポートを再実行してください。ダンプの一部だけを変換することはできますか?
CREATE TABLE と INSERT ブロックを新しいファイルにコピーし、そのサブセットのみを SQLite に対して実行してください。