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タイプを調べられます。一般的なフォーマットの早見表と、二重拡張子を見抜くヒント付きです。

Excel シート分割ツール

XLSX または XLS のブックを、ワークシートのタブ、データ行のまとまり、列の値でブラウザー内で分割します。ファイルをアップロードせずに、1 つの XLSX またはローカル ZIP をダウンロードできます。

CSVからExcelへ変換

CSVをブラウザ内で単一シートのXLSXへ変換します。区切り文字を確認し、IDを保持し、安全な数値だけを数値セルにして内容を送信せず保存できます。

MOBI から EPUB への変換ツール

MOBI の電子書籍を、Apple Books・Kobo・Google Play ブックス・最新のほとんどのアプリが読めるオープン標準の EPUB に変換します。.mobi ファイルをアップロードして、きれいな .epub をダウンロード。

SQLテストデータジェネレーター

任意のテーブル名に対し、連番のサンプル行(id, name, email, active)で実行可能なSQL INSERT文を生成します。最大200行、MySQL構文、ワンクリック。

フェイクJSONジェネレーター

名前、メール、真偽値、スコア、日付を含むサンプルJSON配列を数秒で生成。APIモックやテストフィクスチャに最適です。

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