Исключить строку в Import-Csv - PullRequest
1 голос
/ 19 марта 2019

У меня есть вопрос относительно Import-Csv в PowerShell. Мой скрипт читает все файлы * .csv в моем каталоге и записывает их в базу данных MS SQL. Пока все хорошо, но у меня проблема с этими CSV-файлами. Все они выглядят одинаково так:

Header1;Header2;Header3
-----;-----;-----
Data1;Data2;Data3
Data1;Data2;Data3

и т. Д.

Мой код выглядит так:

foreach ($File in (Get-ChildItem -Path 'C:\data\*.csv')) {
    Import-Csv $File -Delim ';' | ForEach-Object {
        Invoke-Sqlcmd -Database $SQLDatabase -ServerInstance $SQLInstance -Query "insert into dbo.customer_data VALUES ('$($_."Instance Name"............)'

Работает нормально, если я удаляю строку с "---", потому что PowerShell не может привести это к целому числу.

Вопрос: Существуют ли решения для игнорирования строки при работе с Import-Csv? Я обнаружил, что могу пропустить строки с Get-Content, но, похоже, это может пропустить только список строк, а не конкретный. Я также думал об экспорте CSV-файлов без этой строки с:

foreach ($File in (Get-ChildItem -Path 'C:\data\*.csv')) {
    Import-Csv $File -Delim ';' |
        where {$_."Instance Name" -ne "-------------"} |
        Export-Csv "C:\data\BaseName.csv" -NoTypeInfo

Но я думаю, что это не очень хорошее решение, поскольку файлы теперь дублируются, и я понятия не имею о заполнителях имен в PowerShell. Или я могу получить текущее имя файла csv и перезаписать его?

1 Ответ

3 голосов
/ 19 марта 2019

Командлет Import-Csv нельзя пропустить, но у вас есть несколько других вариантов:

  1. Отфильтровать строку перед преобразование из CSV:

    Get-Content $file | where { $_ -notmatch "--" } | ConvertFrom-Csv -Delim ";"
    
  2. Отфильтровать элемент после импорта CSV:

    Import-Csv $file -Delim ";" | where { $_ -notmatch "--" }
    
  3. Предложено @AnsgarWiechers (пропустите 1-й элемент после импорта):

    Import-Csv $file -Delim ";" | select -Skip 1
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...