我面临着将1个或多个CSV文件转换为JSON的任务。
我已经可以使用以下命令做到这一点:
Import-Csv "File1.csv" |
ConvertTo-Json -Compress |
Add-Content -Path "File1_output.JSON"
但是,一次只能处理一个文件,您必须手动输入文件名。
给你一个背景,假设我有2个CSV文件,一个叫File1.csv,另一个叫File2.csv,我想循环浏览Documents文件夹中的所有.csv文件,并创建一个.json输出文件,该名称后缀。
理想情况下,我想将其称为.ps1文件或什至命令行bat文件,因为SSIS最终将对其进行调用。
答案 0 :(得分:2)
使用Get-ChildItem
枚举文件,并使用循环处理枚举文件。
这样的事情应该可以转换当前工作目录中的所有CSV:
Get-ChildItem -Filter '*.csv' | ForEach-Object {
Import-Csv $_.FullName |
ConvertTo-Json -Compress |
Set-Content ($_.Basename + '_output.json')
}
请注意,这将分别转换每个文件。如果要将所有CSV合并到一个JSON文档中,则可以消除循环
Get-ChildItem -Filter '*.csv' |
Import-Csv |
ConvertTo-Json -Compress |
Set-Content 'output.json'
至少与CSV具有相同的列相同。
否则,您需要首先定义生成的JSON文件的所需结构,然后以符合所需输出格式的方式合并来自CSV的数据。