SQLからCSVへの変換ツール

ときには、必要なデータの唯一のコピーがバックアップの.sqlファイル、つまりINSERT INTO users (id, email, created_at) VALUES (...)文のダンプだけということがあります。再度エクスポートするためだけにデータベースへ読み込むのは遅い作業です。この変換ツールは、列リストと各VALUESタプルをINSERT構文から直接読み取り、スキーマを復元しなくてもExcel、Googleスプレッドシート、Numbers、pandasで開けるCSVを生成します。

SQLのINSERTをCSVに変換する方法

  1. 1

    SQLを貼り付ける

    1つ以上のINSERT文を入れます。単一行と複数行のVALUES (...)ブロックの両方に対応しています。

  2. 2

    列を自動検出

    パーサーはVALUESの直前にある`(col1, col2, ...)`リストを読み取り、それをCSVの見出し行として扱います。

  3. 3

    行を抽出

    各`(val1, val2, ...)`タプルがCSVの1行になります。単一引用符の文字列は引用符が外され、数値とNULLはテキストとしてそのまま渡されます。

  4. 4

    CSVをコピー

    CSV出力を取得してスプレッドシートに貼り付けるか、`.csv`拡張子で保存します。

パーサーが受け付けるもの

INSERT INTO users (id, email, created_at) VALUES
  (1, 'alice@example.com', '2024-01-12 09:00:00'),
  (2, 'bob@example.com',   '2024-01-13 10:30:00'),
  (3, 'carol@example.com', '2024-01-13 11:15:00');

これが次のようになります。

id,email,created_at
1,alice@example.com,2024-01-12 09:00:00
2,bob@example.com,2024-01-13 10:30:00
3,carol@example.com,2024-01-13 11:15:00

適用されるCSVエスケープ規則

  • 区切り文字は常にカンマで、区切り文字を選ぶオプションはありません。
  • カンマ、二重引用符、改行を含むフィールドは二重引用符で囲まれます。
  • 内部の二重引用符は二重化されます("は""になる)。RFC 4180に準拠します。
  • SQL文字列リテラルの先頭と末尾の単一引用符は取り除かれます。
  • SQLのNULLはリテラルなテキストNULLとしてそのまま渡されます。空のセルが必要なツールの場合は、後段で置き換えてください。

知っておくべき制限

  • 列リストが必須。 パーサーはVALUESの前の(col1, col2, ...)リストから見出しを読み取ります。列リストのない素のINSERT INTO t VALUES (...)は、見出しのないCSV行になります。
  • 一度に1テーブルのみ。 ダンプが異なるテーブルのINSERTを混在させている場合は、先に分割してください。幅の異なる行は不揃いなCSVになります。
  • CREATE TABLEの解析なし。 列の型は使われません。日付、JSON、バイナリのblobは生のテキストとして通ります。
  • 各括弧グループが1行になる。 パーサーは各(...)グループを1行に変換するため、括弧を含む末尾の句(ON DUPLICATE KEY UPDATE、RETURNING)、NOW()のような関数呼び出し、値の中の(1,2,3)のような入れ子配列は余分な行を追加します。入力を単純なINSERT ... VALUESタプルに限定し、貼り付ける前にそうした式をリテラルに置き換えてください。

よくある質問

はい。INSERTがこれらのデータベース共通の標準形式INSERT INTO table (cols) VALUES (...)に従っている限り動作します。このツールは完全なSQLパーサーを実行するわけではなく、列リストと括弧内の値タプルを抽出するだけなので、各文は単純なINSERT構文にとどめてください。

単一引用符のSQL文字列内のカンマは保持されます。出力では、カンマ・引用符・改行を含むフィールドは二重引用符で囲まれ、内部の引用符はRFC 4180に従って二重化されます。それ自体が括弧を含む値は、うまく分割されないことがあります。

いいえ。SQLは当社のサーバーに送信され、一度の処理で解析されて返されるため、入力は一度に数メガバイトにとどめてください。非常に大きなダンプの場合は、ファイルをチャンク(1チャンクにつき1つのINSERTブロック)に分割し、少しずつ変換してください。

いいえ、出力はフラットなCSVです。列の型、インデックス、制約はCREATE TABLEにあり、この変換ツールの範囲外です。

SQLはCSVを生成するためだけに当社のサーバーへ送信され、保存されません。変換した行数の匿名のカウントは保持しますが、SQLのテキストそのものは決して保持しません。

関連ツール

ファイル拡張子識別ツール

ファイル名や拡張子から、対応するファイルタイプとMIMEタイプを調べられます。一般的なフォーマットの早見表と、二重拡張子を見抜くヒント付きです。

vCardをCSVに変換

vCard(.vcf)のエクスポートを貼り付けると、名前・メール・電話の列を持つきれいなCSVが得られます。連絡先ごとに1行で、スプレッドシートや連絡先インポーターですぐに開けます。

EPUB から MOBI への変換ツール

古い Kindle 端末やレガシーな電子書籍ライブラリ向けに EPUB の電子書籍を MOBI に変換します。章立てと目次はそのまま保たれます。アップロード・変換・ダウンロード。

CSV列抽出器

CSVファイルを貼り付け、必要な列のみを保持します。列は1番目のインデックスから選択し、どのスプレッドシートやデータベースにも使用可能なクリーンで再引用可能なCSVファイルをエクスポートします。

重複ファイル名検出ツール

ファイル名のリストを貼り付けると、複数回登場する名前とその件数が表示されます。大文字・小文字を区別しない照合も選択できます。

CSVフィルターツール

任意の列でテキスト一致に基づいてCSVをフィルターします。選択した列に検索語が含まれている行のみを保持します(大文字・小文字区別なし)。

このツールは他の言語でも利用できます