排查 CSV 显示为单列的原因:尝试更改 Import-Csv 的 Delimiter 参数

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

关于本文
本文是通过利用生成式 AI 的自动化生成流程创建的。我们查阅了 Microsoft Learn 的 Import-Csv -Delimiter 规范,并整理了一种可以通过虚拟数据测试 CSV 显示为单列时的排查方法。在编写本文时,未执行 PowerShell。

验证状态:📘 已确认 Microsoft 官方规范・未进行 PowerShell 实际运行
信息确认日期:2026年10月2日。

CSV 的分隔符并不一定都是逗号。如果将分号分隔的文件当作默认的逗号分隔来读取,有时它看起来就像只有单列。

查看列数

@'
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 的默认值是逗号。如果指定的字符与实际的分隔符不一致,就无法将列正确地分到不同的属性中。

更改一处

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 却只有一列”并不一定意味着文件已损坏

尽管被称为 CSV,但实际文件中也可能会使用逗号以外的分隔符。不要将 Import-Csv 视为“能够通过外观自动判断的万能解析器”,最好先确认接收到的数据的分隔符和标题后再进行读取,这样更安全。

特别是在自动化处理中,Import-Csv 不会报错而是“作为单列被正常读取”的情况往往非常棘手。为了防止错误更新,与其直接将其传递给后续处理,不如在最初就验证预期的属性名或列数,如果不符合预期则予以中止。

官方信息与一手资料

GitHub 示例

文档信息

文章??
排查 CSV 显示为单列的原因:尝试更改 Import-Csv 的 Delimiter 参数
?布日期
更新日期
来源
https://papanda925.com/?p=17829&lang=zh

?可: ?于本站?有相??利的正文及原??表,除非?有?明,可依据 CC BY 4.0 使用。本文可能包含使用生成式AI?建或??的内容。若代??有?可声明,或?接的GitHub???定了?可,?代?以??可?准。引用内容、第三方?料、?片及商?不在本?可范?内。 使用政策

标题和URL已复制