使用PowerShell

时间:2017-07-10 23:45:07

标签: sql-server powershell csv

我想使用PowerShell从我的CSV文件导入数据。 答案贴在这里: How to import data from .csv in SQL Server using PowerShell? 就像一个魅力。

但是,我想建立在这个解决方案的基础上。如果文件包含2列,例如Feature1,Feature2,我希望该表有第三列,例如名称。目的是将对应于不同名称的多个文件加载到一个表中。

Feature1 | Feature2 | Name
Value1   | Value2   | NameA
Value3   | Value4   | NameA
...
Value5   | Value6   | NameB

如果我给PowerShell赋予变量

$NameValue = "NameA"

如何在命令中正确包含此内容:

Import-CSV .\NameA.csv | ForEach-Object {Invoke-Sqlcmd `
  -Database $database -ServerInstance $server `
  -Query "insert into $table VALUES ('$($_.Feature1)','$($_.Feature2)', '$($NameValue.Name)')"
  }

目前,这只填写功能列,但名称列为空白。

1 个答案:

答案 0 :(得分:0)

这应该这样做(除非你从字符串中访问变量的属性,否则你不应该使用子表达式$()运算符):

Import-CSV .\NameA.csv | ForEach-Object {Invoke-Sqlcmd `
  -Database $database -ServerInstance $server `
  -Query "insert into $table VALUES ('$($_.Feature1)','$($_.Feature2)', '$NameValue')"
}