【发布时间】:2019-03-20 16:17:11
【问题描述】:
我有一个关于 PowerShell 中的 Import-Csv 的问题。
我的脚本读取我目录中的所有 *.csv 文件并将其写入我的 MS SQL 数据库。到目前为止一切顺利,但我在这些 csv 文件中有问题。它们看起来都像这样:
等等。
我的代码如下所示:
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 文件的当前名称并覆盖它吗?
【问题讨论】:
标签: powershell csv