メインコンテンツへ移動

CSVファイルの結合

この結合ツールは、複数のCSVファイルを1つに結合し、列の位置ではなくヘッダー名で列を整列させます。出力されるヘッダーはすべてのファイルの列の結合であり、行は持っている値を埋め、持っていない箇所は空白になります。解析と書き込みはブラウザ内で行われ、ファイルはアップロードされることはありません。

端末内で処理

CSVファイルの結合とは

同じ種類のレコードの2つのエクスポートは、列についてほとんど一致しません――1つは名前とメールアドレスを持ち、もう1つは名前と会社名を持ちます。それらを単に重ねると、不正確なファイルが作成されます。行は上にあるヘッダーの下に配置され、メールアドレスという名前の列は誰かの会社の値を静かに収集してしまいます。解決策は、列名で結合し、各行を自身のファイルのヘッダーに基づいて再マッピングすることです。

これがこの結合ツールが行うことです。出力されるヘッダーは順序付きの結合です――最初のファイルの列がその順序で、次に新しい列が現れた時点で追加されます。各行はその結合に対して書き込まれ、自身のファイルが持つ列の値を取り、残りは空白のままにします。出力はRFC 4180に準拠しています:コンマ、必要に応じてのみ引用符で囲まれたフィールド、CRLFの行終端です。

複数のファイルはローカルに残ります。ファイル選択ツールでファイルを添付してください――ブラウザのファイルAPIがそれらをこのタブのメモリに読み込みます――または、---のみを含む行で区切って貼り付けてください。何も送信されることはありません。アップロードのステップは存在しないため、必要ありません。

結合された出力が従う引用、CRLF、エスケープのルールは、サイトのRFC 4180ガイドで平易な言葉で説明されています――CSVでパイプラインを構築する前に5分の価値があります。

ファイルが1つのテーブルになったら、次の通常のステップはスクリプトが消費できるレコードを作成することです。そのCSVからJSONへの変換ツールがワンクリックで次のステップを実現します。

位置ではなく名前で結合

この違いは、ファイルを救うまで学術的なように聞こえるかもしれません。ファイル1に名前、メールアドレスの列があり、ファイル2に名前、会社名の列があるとします。結合されたヘッダーは名前、メールアドレス、会社名になります――最初にファイル1の列、次に新しい列が追加されます。Adaの行はメールアドレスを埋め、Graceの行は会社名を埋め、それぞれがもう一方を空白のままにします。以下の作業例はまさにこのペアを示しています。

マッピングは各ファイルの独自のヘッダーを通じて行われるため、ファイル内の列の順序は重要ではありません。ファイル2が会社名、名前の順で到着しても、その値は依然として正しく配置されます――まさに位置ベースの積み上げが間違いであり、同一のヘッダーを仮定する結合ツールがなぜ罠であるかです。

不揃いなファイル、BOM、その他の現実的な問題

実際のエクスポートは不揃いであり、この結合ツールはファイルを拒絶するのではなく、一般的なケースを処理します:

  • ファイル先頭のUTF-8 BOMは削除されます――そうしないと、Excelのエクスポートは誰も一致させられない不可視の最初の列が生成されます。
  • 空白行はスキップされ、空のファイルは無視されますが、致命的ではありません。
  • 末尾のセルがない行は空白になります――不揃いな右端はエラーではなく、正規化されます。
  • 解析エラーはファイルごとに行ごとに報告されます――ファイル2: 引用符で囲まれたフィールドが終了していません、行4――これにより問題のあるファイルが特定されます。
  • 1つのファイル内で名前が重複するヘッダーは、最初の位置でのみ読み取られます。2番目のコピーにデータがある場合は、そのようなヘッダーの重複を削除してください。

出力の外観――そして実行しないこと

出力は1つのCSVドキュメントです:単一のヘッダー行の後に、順序通りにすべてのファイルの行が続きます。行終端はRFC 4180に従ってCRLFで、末尾にCRLFが付きます。フィールドは必要に応じてのみ引用符で囲まれます:コンマ、引用符(標準が要求するように二重化)、または内部の改行、またはスプレッドシートがそれ以外にトリムする先頭または末尾の空白。

値はテキストとしてそのまま渡されます――顧客番号007は007のままです――そして重複は削除されたり順序が変更されたりすることはありません。入力された2つの同一の行は、出力でも2つの行のままです:それらを collapse するには、2つの行を同一と見なす基準を決定する必要があり、その判断はツールではなくあなた自身のものです。

よくある質問

添付するCSVファイルはアップロードされますか?

いいえ。添付されたファイルはブラウザのファイルAPIで読み取られ、このタブ内の文字列に変換され、そこで結合され、書き出されます――何もデバイスから出ることはありません。ページはconnect-src 'self'で提供されるため、他のオリジンへのフェッチはブラウザ自体によって拒否され、結合が実行されている間はネットワークパネルにトラフィックは表示されません。給与データなどのエクスポートがローカルに留まることがこのツールの目的です。

ファイルに異なる列がある、または同じ列が異なる順序にある場合はどうなりますか?

それがこのツールが存在する理由です。列は名前で結合され、各行は自身のファイルのヘッダーに基づいて再マッピングされるため、いずれかのファイル内の列の順序は重要ではありません。行は単に、自身のファイルが持たない列を空白のままにします。

重複する行は削除されますか?

いいえ。結合は構造的な整列であり、重複の削除は同一性に関する別の判断です――すべての列、キー、大文字小文字を区別しないですか?――そして、間違った推測は実際のデータを削除します。同一の行はそのまま通過します;必要であれば、その後で独自のルールを適用してください。

パーサーはどのCSV方言を受け入れますか?

コンマ区切りのRFC 4180:コンマ、引用符、改行を含む引用符で囲まれたフィールド、二重化された引用符、およびCRLFまたはLFの入力終端。セミコロン区切りのエクスポート――欧州でのExcelのデフォルト――は単一の広い列として解析されるため、まずコンマで再保存してください。出力は常にコンマ区切りでCRLF終端です。

不揃いな行はどのように処理されますか?

ファイルのヘッダーよりも短い行は、欠落した列に空白を追加します;より長い行には名前のない余分なセル――列名のないセル――があり、それらは無視されます。1つのファイル内で重複するヘッダー名は、最初の出現箇所で読み取られます。これらに対しては静かな処理が予約されています;不正な構文はファイルごとに行ごとのエラーになります。

ファイルのサイズに制限はありますか?

実際の制限はブラウザタブのメモリです。各ファイルはサイトのメインスレッドCSVエンジンによって解析され、そのエンジンはページをフリーズさせる代わりに明確なメッセージで8MBを超える入力を拒否します――これはサイトの他のCSVツールが適用する同じ文書化された制限です。典型的なエクスポートの場合、これはファイルあたり数万行です。