CSV・TSVの各行の列数をチェックし、他の行とずれている箇所を特定します。 引用符の閉じ忘れやセル内改行も検出し、列数を揃えた修正ファイルを書き出せます。
「一致しない列数を検出しました」とは?CSVの列数不一致が起きる原因と直し方
phpMyAdminなどでCSVをインポートしたときに表示される「一致しない列数を検出しました」や「CSV入力のフィールド数が不正です(行: N)」というエラーは、データのどこかに他の行と列数が違う行が混ざっていることを意味します。1行でも該当すればインポート処理全体が止まるため、数万行のデータから原因の1行を探す作業が必要になります。
本ツールは、CSVやTSVを貼り付けるだけで基準となる列数と異なる行をすべて一覧表示します。単純にカンマを数えるのではなくRFC 4180に準拠して解析するため、"東京都港区,赤坂"のように引用符で囲まれた中のカンマは区切りとして数えません。 さらに引用符の閉じ忘れ、セル内改行、BOMの有無、文字コード(UTF-8 / Shift-JIS)も判定し、列数を揃えた修正ファイルまで書き出せます。
こんなシーンで便利です
phpMyAdminのインポートエラーの原因特定
「一致しない列数を検出しました」が出たCSVを貼り付けると、原因となる行がレコード番号と物理行番号の両方で表示されます。
DB・システムへの一括登録前チェック
MySQLやPostgreSQL、Salesforce、Shopifyなどへの取り込み前に、列のズレを検出してエラーによる処理中断を防ぎます。
ExcelやスプレッドシートからのCSV書き出し確認
セル内改行や文字コードの違いなど、書き出し時に混入しやすい問題をまとめて確認できます。
TSV・セミコロン区切りデータの検証
区切り文字はカンマ・タブ・セミコロン・パイプから選択でき、既定では自動判定します。
使い方は簡単 4ステップ
- CSVやTSVをテキストエリアに貼り付けるか、ファイルをドラッグ&ドロップします。
- 区切り文字が自動判定され、基準列数と異なる行が一覧表示されます。
- 引用符の閉じ忘れやセル内改行がある場合は、警告として個別に表示されます。
- 「列数を揃えて保存」で修正済みファイルを、「エラー一覧」で不一致行のCSVを書き出せます。
※1行目の項目数を基準として判定します。ヘッダーのないデータでもそのままご利用いただけます。
ご利用時の注意点
- 引用符の扱い:RFC 4180に準拠し、引用符で囲まれた中のカンマや改行は区切りとして数えません。引用符が閉じられないまま終わった場合は警告を表示します。
- 空行の扱い:データの途中と末尾のどちらの空行も検証対象から除外されるため、余計なエラーとして表示されることはありません。
- 文字コード:ファイル読み込み時にUTF-8として厳密に解釈し、失敗した場合はShift-JISとして読み直します。判定結果は画面に表示されます。
- 自動修正の注意:列が多すぎる行は基準列数までで切り詰めるため、超過分のデータは失われます。書き出したファイルは必ず内容をご確認ください。
CSVインポートエラーの原因別・症状と対処法一覧
「一致しない列数を検出しました」をはじめとする代表的なエラーについて、原因と確認方法を整理しました。
| 症状・エラー表示 | 主な原因 | 確認方法 | 対処 |
|---|---|---|---|
| 一致しない列数を検出しました | データ内のカンマが引用符で囲まれていない | 本ツールで不一致行を特定 | 該当フィールドを引用符で囲む |
| CSV入力のフィールド数が不正です(行: N) | セル内改行がレコード区切りと誤認識された | セル内改行の警告を確認 | 改行を除去するか取込側の設定を変更 |
| Invalid column count in CSV input on line N | 上記の英語表示。原因は同じ | 物理行番号で該当箇所を確認 | 同上 |
| データが右にずれて登録される | 1行だけ区切り文字が多い・少ない | 差分列(+1 / -1)を確認 | 「列数を揃えて保存」で補正 |
| 以降のデータがすべて1セルに入る | ダブルクォーテーションの閉じ忘れ | 引用符の警告と開始行を確認 | 引用符を閉じるか "" にエスケープ |
| 1列目の項目名だけ認識されない | UTF-8ファイルの先頭にBOMが付いている | ファイル情報のBOM表示を確認 | BOMなしUTF-8で保存し直す |
| 日本語が文字化けする | Shift-JISのファイルをUTF-8として読んでいる | 判定された文字コードを確認 | 取込側の想定に合わせて変換 |
【なぜ1行のミスで全体が止まるのか】
多くのインポート機能は、1行目の列数をもとにテーブルの列とデータを対応づけます。途中で列数が変わると対応づけが破綻するため、システムは処理を継続できずトランザクション全体をロールバックします。「1行だけ直せば済む」にもかかわらず、その1行を数万行から探すのが難しいことが、この種のエラーが厄介な理由です。
【最も多い原因はカンマとセル内改行】
実務で頻出するのは、住所の東京都港区,赤坂や金額の1,000のように、データ内のカンマを引用符で囲み忘れたケースです。もうひとつが、GoogleスプレッドシートやExcelでセル内改行を含むデータを書き出した場合で、取込側が対応していないと改行がレコードの区切りとして扱われます。本ツールはこの両方を区別して表示します。
CSVとTSVの違い・文字コード・BOM|インポート前に押さえておく仕様
列数の検証だけでは防げないエラーもあります。データ連携でつまずきやすい仕様の違いを整理します。
CSVとTSVの違い|区切り文字だけではない実務上の使い分け
CSVとTSVの違いは区切り文字がカンマかタブかという一点ですが、実務上の性質は大きく異なります。
CSVはデータ内にカンマが現れやすく、そのたびに引用符でのエスケープが必要になります。住所や商品説明、金額の桁区切りなど、日本語データではカンマの出現頻度が高いため、エスケープ漏れによる列ずれが起きやすい形式です。
一方TSVは、データ内にタブ文字が現れることがまれなためエスケープがほぼ不要という利点があります。反面、目視では区切りが分かりにくく、テキストエディタの設定によってはタブがスペースに変換されて壊れるリスクがあります。
どちらを使うかは好みではなく、連携先システムの仕様に従うのが確実です。
BOMの有無で挙動が変わる|1列目だけ認識されない典型パターン
UTF-8で保存したCSVであっても、先頭にBOM(Byte Order Mark、3バイトの識別子)が付いているかどうかでシステムの挙動が変わります。
BOMがあると、プログラムによっては1行目の最初の列名が\uFEFFidのように読み込まれ、列数は一致しているのにマッピングだけが失敗するという分かりにくいエラーになります。
逆にExcelでそのまま開く場合はBOMがないと日本語が文字化けするため、用途によって必要・不要が正反対になります。Excelで開くならBOM付き、システムに取り込むならBOMなしが基本方針です。本ツールはファイル読み込み時にBOMの有無を判定して表示します。
Shift-JISとUTF-8の混在|Excel経由で必ず起きる文字コード問題
日本語版のExcelで「CSV(カンマ区切り)」として保存すると、多くの環境でShift-JISで書き出されます。一方、Webシステムやデータベースの多くはUTF-8を前提としているため、そのまま取り込むと日本語が文字化けします。
さらに厄介なのは、Shift-JISにはUTF-8では表現される文字が存在しないケースがあることです。丸数字やローマ数字などの機種依存文字、一部の異体字は変換時に欠落したり別の文字に置き換わったりします。
対処としては、Excelの「CSV UTF-8(コンマ区切り)」形式で保存するか、テキストエディタで文字コードを変換してから取り込むのが確実です。本ツールは読み込んだファイルの文字コードを判定して表示するため、変換漏れをその場で発見できます。
CSVインポートでよくある失敗と対策
データ内のカンマをエスケープせず、列が右にずれたまま登録される
住所の「東京都港区,赤坂」や金額の「1,000」に含まれるカンマを引用符で囲んでいないため、パース時に別の列としてカウントされ、以降のデータがすべて1つ右にずれて登録される失敗です。エラーが出ずに取り込めてしまうケースもあり、その場合は後日データを見て初めて気づくことになります。
💡 対策・解決策を見る▼
セル内改行を含むデータを書き出し、レコードの区切りと誤認識される
GoogleスプレッドシートやExcelでセル内改行を含むデータをCSVに書き出すと、仕様としては引用符で囲まれた正しい形式になりますが、取り込み側がセル内改行に対応していない場合、改行の位置でレコードが分割されて列数不一致を引き起こします。phpMyAdminのインポートで頻出する原因です。
💡 対策・解決策を見る▼
ダブルクォーテーションの閉じ忘れに気づかず、以降のデータが壊滅する
商品説明文やログデータの中に含まれる引用符を正しくエスケープしていないと、そこから先の改行やカンマがすべて1つのフィールドの中身として扱われます。結果として数千行のデータが1レコードに圧縮され、列数の判定自体が意味をなさなくなります。
💡 対策・解決策を見る▼
Excelから書き出したShift-JISのCSVをそのまま取り込み、文字化けさせる
日本語版Excelで保存したCSVはShift-JISになることが多く、UTF-8を前提とするシステムへ取り込むと日本語がすべて文字化けします。列数は一致しているためバリデーションを通過してしまい、登録後に初めて気づくという厄介な失敗です。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.「一致しない列数を検出しました」というエラーの原因は何ですか
A. phpMyAdminなどでCSVをインポートしたときに出るこのエラーは、データのどこかに他の行と列数が異なる行が混ざっていることを示しています。最も多い原因は、住所の「東京都港区,赤坂」や金額の「1,000」のようにデータ内にカンマが含まれているのに引用符で囲まれていないケースです。次いで多いのが、Excelやスプレッドシートでセル内改行を含むデータを書き出した場合で、改行がレコードの区切りとして誤認識されます。本ツールに貼り付けると、基準となる列数と異なる行がレコード番号と物理行番号の両方で一覧表示されます。
Q.TSV(タブ区切り)ファイルも検証できますか
A. はい、対応しています。区切り文字はカンマ・タブ・セミコロン・パイプから選択でき、既定では先頭数行を解析して自動判定します。CSVとTSVの違いは区切り文字だけで、TSVはデータ内にカンマを含んでいてもエスケープが不要という利点があります。一方でタブ文字自体をデータに含められない、目視で区切りが分かりにくいといった欠点もあり、どちらを使うかは連携先システムの仕様に従うのが確実です。
Q.Shift-JISで保存されたCSVでも文字化けせずに読み込めますか
A. はい、読み込めます。ファイルを読み込む際にUTF-8として厳密にデコードを試み、失敗した場合はShift-JISとして解釈します。判定した文字コードは画面上に表示されるため、想定と違う場合はその時点で気づけます。日本語版Excelから書き出したCSVはShift-JISになることが多く、UTF-8前提のシステムへ取り込むと文字化けするため、事前確認に活用してください。
Q.ダブルクォーテーションの閉じ忘れは検出できますか
A. はい、検出します。データの末尾まで引用符が閉じられなかった場合、その開始位置の物理行番号とともに警告を表示します。引用符が閉じられていないと、それ以降のすべての改行やカンマが1つのフィールドの中身として扱われるため、列数の判定自体が意味をなさなくなります。この警告が出た場合は、まず引用符を正しく閉じるか、データ内の引用符を2つ重ねてエスケープしてから再検証してください。
Q.検出した列数の不一致を自動で修正することはできますか
A. はい、「列数を揃えて保存」から修正済みのファイルを書き出せます。列が不足している行には空のフィールドを追加し、列が多すぎる行は基準列数までで切り詰めます。また、カンマや改行、引用符を含むフィールドは自動的に引用符で囲み直すため、再度同じエラーが起きない形式になります。ただし切り詰めた列のデータは失われるため、書き出したファイルは必ず内容をご確認ください。
Q.セル内改行を含むデータはエラーとして扱われますか
A. エラーにはなりません。引用符で囲まれた中の改行はRFC 4180の仕様として正しい形式であり、本ツールも1つのフィールドとして正しく解釈します。ただしセル内改行を扱えないインポート機能では列数不一致の原因になるため、該当するレコードがある場合は件数と番号を情報として表示します。取り込み先が対応していない場合は、改行を別の文字に置換してから取り込んでください。
Q.行番号が2種類表示されているのはなぜですか
A. レコード番号はデータとしての何件目かを表し、物理行番号はテキストエディタで開いたときの行番号を表します。セル内改行を含むデータがあると両者はずれるため、修正のためにエディタで該当箇所を開く際は物理行番号を、インポート先のエラーメッセージと照合する際はレコード番号を参照してください。空行は検証対象から除外されるため、レコード番号には含まれません。
Q.機密情報を含む社内のCSVを検証しても情報漏洩の危険性はありませんか
A. ありません。本ツールは読み込み・解析・修正ファイルの書き出しまで、すべての処理をお使いのブラウザ内で完結させています。データが外部サーバーへ送信されたり保存されたりする仕組みはなく、ページを閉じればメモリ上のデータも消去されます。顧客情報や社外秘のマスタデータでも安心してご利用いただけます。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。