CSV結合ツール

複数のCSVファイルを1つにまとめます。同じヘッダーならそのまま連結し、異なるヘッダーは列を揃えて書き出します。引用符付きフィールドは壊れず、データはブラウザの外へ出ません。

ファイルはブラウザ内で処理され、アップロードされません。

ファイルはブラウザ内で処理され、アップロードされません。

結合の仕組み

同じヘッダーのファイルは行境界で連結します。ヘッダーが違うファイルは行ごとに読み、1つの表に揃え直します。

  1. 1

    各ヘッダーを読む

    各ファイルの先頭行からBOM、区切り文字、列名を調べます。判定が違えば区切り文字を上書きできます。

  2. 2

    出力列を決める

    「すべての列」は最初に現れた順ですべてのヘッダーを残します。「先頭ファイルの列」は先頭のヘッダーだけ残し、後続の余分な列を捨てます。元ファイル名列を先頭に足すこともできます。

  3. 3

    1つのCSVを書く

    ヘッダーが一致すれば、後続ファイルは元データのバイト範囲として追加するので、大きな結合でも行を復号しません。列が違う場合は各データ行を出力列に写して再エンコードします。

保持するものと非対応

  • 引用符付きフィールドは RFC 4180 に従います。引用符内のカンマ、改行、二重引用符("")はデータです。
  • 出力の区切り文字と改行は先頭ファイルに合わせます。入力のどれかにUTF-8 BOMがあれば出力にも付けます。
  • ファイル末尾に改行が無い場合は、次のファイルの前に改行を入れて行がくっつかないようにします。
  • UTF-16はメッセージ付きで拒否します。先にUTF-8で保存してください。一度に結合できるのは最大50ファイルです。
  • 同一ファイル内の重複ヘッダーは name、name_2 のように一意化します。空のヘッダーは column_N になります。

算例

組み込みサンプルを使うので、読み込んで数字を照合できます。

同じヘッダーの注文ファイル2つを結合

「注文ファイル2つ(120行 + 80行)」を読み、列は「すべての列」、ヘッダーはオンのままにします。

  1. 1q1-orders.csv のヘッダーは order_id,order_date,region,amount、データは120行です。
  2. 2q2-orders.csv も同じヘッダーでデータは80行、order_id は 2001 から始まります。
  3. 3ヘッダーが一致するため連結します。ヘッダーは一度だけ書き、Q1の全行のあとQ2の全行が続きます。
  4. 4120 + 80 = 200 データ行。結合ファイルの先頭は同じヘッダー行です。

結果: q1-orders_merged.csv。データ200行(Q1が120、Q2が80)、列は4つ。

列が違う社員と業務委託を結合

「社員 + 業務委託(列が違う)」を読み、「すべての列」のままにします。

  1. 1staff.csv の列は id, name, team(4人)。contractors.csv は id, name, email, day_rate(3人)。
  2. 2ヘッダーの和集合は id, name, team, email, day_rate の5列で、最初に出た順です。
  3. 3社員行の email と day_rate は空欄、業務委託行の team は空欄です。「Li, Wei」のような引用符付き名前は1セルのままです。
  4. 4「先頭ファイルの列」にすると id, name, team だけ残り、email と day_rate は落ちます。

結果: データ7行、5列。開くと3人の業務委託メールが email 列に入り、team は空欄です。

FAQ

CSVの結合、ヘッダー、文字コードについての質問です。

CSVはサーバーにアップロードされますか?

いいえ。ブラウザの File API で端末上だけ読みます。アップロードはなく、タブを閉じると破棄されます。

列が違うCSVを結合するには?

「すべての列」を選びます。すべてのヘッダーを残し、そのファイルに無いセルは空欄です。後続を先頭のヘッダーに合わせたいときは「先頭ファイルの列」です。

ヘッダー行は繰り返されますか?

いいえ。「先頭行はヘッダー」がオンなら、先頭に一度だけ書きます。後続ファイルはデータ行だけ使います。

カンマや改行を含む引用符付きフィールドはどうなりますか?

そのまま残します。二重引用符内の改行は行末ではなくフィールドの一部、"" はエスケープされた引用符です。

どの区切り文字に対応していますか?

カンマ、セミコロン、タブ、パイプです。各ファイルの先頭行から判定し、上書きもできます。結合結果は先頭ファイルの区切り文字を使います。

Excelで正しく開けますか?

はい。入力のどれかにUTF-8 BOMがあれば出力にも残します。先頭ファイルがWindowsのCRLFならそれも残します。

各行がどのファイル由来か分かりますか?

「元ファイル名の列を追加」をオンにすると、各データ行の先頭に元のファイル名が付きます。

CSV分割ツールとの違いは?

分割ツールは1つのファイルを複数に切る逆の操作です。分割した断片をここで戻せます。ヘッダーをオンにすれば繰り返されたヘッダーは積み上がりません。