iOS・Androidその他

DB Browser for SQLite で扱う .dbファイル に sqlファイルをリストアする

iOS・Android
この記事は約3分で読めます。

発端

モバイル端末の内部DBにマスタデータを持たせる要件が降りてきて、サンプルのデータをいただいた。

ファイル形式はspl。

開発時、DB Browser for SQLite を用いてテーブルデータを参照している。

いただいたマスタデータの量が膨大だったこともあり、どうにかsplファイルをいい感じにインポートできないかなと考えた。

ゴール

要するに「SQLiteでリストア」ができれば、良さそう。

環境

macOS Sonoma14.4.1

DB Browser for SQLite 3.12.2

手順

  1. ターミナル経由で .dbファイルのパスを指定し、SQLiteコマンドラインツールを起動
  2. SQLファイルの確認と修正
  3. .readコマンドを使用してダンプファイルを実行する

.dbファイルのパスを指定し、SQLiteコマンドラインツールを起動

ターミナルを立ち上げて、SQLiteコマンドラインツールを起動。

sqlite3 [dbのパス]

例えば、Documentディレクトリにある「database.db」を指定したときは以下。

sqlite3 /Users/User/Document/database.db

誤ったパスを指定していたとしても、SQLiteコマンドラインツール自体は起動できるため、注意が必要そうです。

SQLファイルの確認と修正

SQLファイルには、SQLiteと互換性のないコマンドが含まれていることがある。

そのため、エラー文を確認し、必要に応じてSQLファイルに含まれるSQLite非互換のコマンド(例:SET DEFINE OFFなど)をコメントアウトしたり、互換性のない関数を書き換えたり、調整を行う必要が発生することがある。

  • SQLファイルに含まれるSQLite非互換のコマンド(例:SET DEFINE OFF)をコメントアウトする例
sed -i.bak 's/^SET DEFINE OFF/-- SET DEFINE OFF/' /Users/User/Document/GitHab/SUMPLE_DATA_TABLE.sql

.readを実行する

sqlite> .read [リストア元のファイルのパス]

例えば、リストア元のファイルが /Users/User/Document/GitHab/SUMPLE_DATA_TABLE.sqlにある場合、

sqlite> .read /Users/User/Document/GitHab/SUMPLE_DATA_TABLE.sql

となります。

作業時の確認点

  • SQLファイル内のSQLite非互換のコマンドや関数を修正する際、影響範囲を確認する
  • データベースへ正しいパスで接続できている
  • 正しくデータがインポートされている