·4分で読めます

MacでSQLiteをCSVにエクスポートする方法

SQLiteデータベースからデータを取り出してスプレッドシートに入れるには、sqlite3のCLIの書式オプションと格闘するか、スクリプトを書く必要があります。ビジュアルなツールがあれば、これは1回のクエリで済む作業になります。

SQLiteデータベースからデータを取り出してCSVファイルにする必要があるとします——Excelを使う同僚と共有するため、データ可視化ツールに取り込むため、あるいはポータブルな形式でレコードをアーカイブするためかもしれません。sqlite3のCLIでもこれは可能ですが、ワークフローはぎこちないものです。.mode csvでモードをCSVに設定し、.output filename.csvで出力先ファイルを設定し、クエリを実行し、それから.output stdoutで出力を元に戻すことを覚えておかなければなりません。どこか一つでも手順を飛ばすと、ファイルが生成されないか、出力がまだリダイレクトされたままでターミナルが無反応になります。

CLIによるエクスポートのワークフローはミスを誘発しやすい

sqlite3でCSVにエクスポートするには、複数のドットコマンドを正しい順序で実行する必要があります。典型的なセッションは次のようになります。

sqlite3 mydb.sqlite
.headers on
.mode csv
.output export.csv
SELECT * FROM products WHERE category = 'electronics';
.output stdout

.headers onを忘れれば、CSVには列ヘッダーがつきません。.output stdoutを忘れれば、次のクエリの結果は画面ではなくファイルに送られてしまいます。2つ目のテーブルをエクスポートしたいですか?別のファイル名で一連の手順をすべて繰り返す必要があります。一度きりのエクスポートであれば我慢できますが、複数のテーブルにわたる定期的なエクスポートとなると、面倒でミスも起こりやすくなります。

csvsqlite3モジュールを使ったPythonスクリプトを書くこともできますが、それは本来シンプルなデータ抽出作業であるはずのものに対して、エンジニアリング上のオーバーヘッドをかけすぎです。

Tomeのクエリエディタでエクスポート

Tomeを使えば、任意のSQLクエリを実行し、その結果をネイティブなグリッドで確認できます。そこからデータを選択してコピーすれば、スプレッドシートに直接貼り付けたり、CSVとして保存したりできる形式が得られます。オートコンプリートでクエリを書いて実行するだけで、ドットコマンドもモード切り替えも不要でデータを取り出せます。

Tome exporting SQLite query results on Mac

まずクエリを書き、必要な分だけエクスポート

テーブル全体をエクスポートしてExcelで絞り込む代わりに、Tomeで目的に合ったクエリを書きましょう。行を絞り込み、テーブルを結合し、値を集計し、SQLで列を整形します。実際に必要なデータだけを、すでに望む形に整った状態でエクスポートできます。

エクスポート前にビジュアルで確認

エクスポート前に、スクロール可能なグリッドでクエリ結果を確認できます。列が正しいか、データが正しく見えるか、行数が期待通りかをチェックしましょう。エクスポート前にエラーに気づければ、Excelで不完全なCSVを開いてから作業をやり直す手間を省けます。

まずスキーマ全体を閲覧

必要なデータがどのテーブルにあるか分からないですか?Tomeのサイドバーで、テーブル、ビュー、それらの列を閲覧しましょう。エクスポート用のクエリを書く前に、サンプルデータをクリックして回ってスキーマを理解できます。このビジュアルな探索は、ターミナルで.schemaコマンドを実行するよりもはるかに速いです。

Mac App StoreでTomeを入手する

次の記事

Tome

Browse, query, and edit SQLite databases in a native Mac app.

Get Tome on the Mac App Store