У меня есть вопрос относительно 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 и перезаписать его?