JSON-файл с циклом PowerShell - PullRequest
       1

JSON-файл с циклом PowerShell

0 голосов
/ 05 апреля 2019

Передо мной стоит задача конвертировать 1 или несколько CSV-файлов в JSON.

Мне удалось сделать это с помощью следующей команды:

Import-Csv "File1.csv" |
    ConvertTo-Json -Compress |
    Add-Content -Path "File1_output.JSON"

Однако это толькоодин файл за раз, и вы должны ввести имя файла вручную.

Чтобы дать вам фон, скажем, у меня есть 2x CSV-файл, один называется File1.csv, а другой File2.csv, что я хотел быхотел бы просмотреть все файлы .csv в папках «Документы» и создать выходной файл .json с добавленным к нему именем.

В идеале я хотел бы назвать его файлом .ps1 или даже командной строкой batфайл как SSIS будет вызывать его в конечном итоге.

1 Ответ

2 голосов
/ 05 апреля 2019

Используйте 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 так, чтобы это соответствовало желаемому выходному формату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...