CSVが1列に見える原因を切り分ける ― Import-CsvのDelimiterを1か所変えてみる

PowerShellカテゴリを表すパンダのイラスト PowerShell

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft LearnのImport-Csv -Delimiter仕様を確認し、CSVが1列に見えるときの切り分けをダミーデータで試せる形にしました。この記事作成時にはPowerShell実行を行っていません。

検証ステータス:📘 Microsoft公式仕様確認済み・PowerShell実行未確認
情報確認日:2026年10月2日。

CSVでも区切り文字が必ずカンマとは限りません。セミコロン区切りを既定のカンマとして読むと1列のように見えることがあります。

列数を見る

@'
Id;Name
1;Alice
2;Bob
'@ | Set-Content -LiteralPath "$env:TEMP\demo.csv" -Encoding utf8

$data = Import-Csv "$env:TEMP\demo.csv" -Delimiter ';'
$data[0].PSObject.Properties.Name

Delimiterの既定値はカンマです。指定文字が実際の区切りと一致しないと、列を別々のプロパティへ正しく分けられません。

1か所変える

Import-Csv "$env:TEMP\demo.csv" -Delimiter ','

ヘッダー全体が一つのプロパティ名のように見えたら、データ破損と決めつける前にDelimiterを疑えます。

列数を機械確認する

$row = Import-Csv "$env:TEMP\demo.csv" -Delimiter ';' | Select-Object -First 1
$row.PSObject.Properties.Count
flowchart TD
 A["CSV受領"] --> B["区切り文字確認"]
 B --> C["Import-Csv -Delimiter"]
 C --> D["列名/列数確認"]
 D --> E["後続処理"]

仕事で使うなら

文字コード、引用符、改行、ヘッダー名も確認します。読み込み直後に必須列を検証し、想定外なら後続処理を止めます。

「CSVなのに1列」は壊れているとは限らない

CSVという呼び名でも、実際のfileではcomma以外のdelimiterが使われることがあります。Import-Csvは「見た目で自動判定してくれる万能parser」と考えず、受け取ったdataのdelimiterとheaderを確認してから読み込む方が安全です。

特に自動処理では、Import-Csvがerrorにならず「1列として正常に読めてしまう」ケースが厄介です。そのまま後続処理へ渡すのではなく、期待するproperty名や列数を最初に検証して、想定外なら停止するようにすると誤更新を防げます。

公式情報・一次情報

GitHubサンプル

文書情報

記事タイトル
CSVが1列に見える原因を切り分ける ― Import-CsvのDelimiterを1か所変えてみる
作成日
更新日
Source URL
https://papanda925.com/?p=17504

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました