使用Powershell将CSV导入SQL获取整个对象而不是每列

时间:2017-04-17 21:48:05

标签: powershell

我有一个相当简单的csv,包含3列,我想使用PowerShell导入到SQL中。我认为我的工作正常,除了我在SQL中每列中获取整行对象而不是csv文件中的每一列。只是为了使问题复杂化我还在csv中添加了一个额外的guid字段,但这似乎是唯一一个实际工作的列。

Powershell的

  Import-CSV D:\sample.csv | ForEach-Object { Invoke-Sqlcmd `
 -Database $DbName -ServerInstance $ServerName -OutputSqlErrors $true `
 -Query "insert into $DbTable ([item],[lob],[cc],[file_import_guid]) VALUES ('$_.Item','$_.LOB','$_.CC','$ImportGUID')"
 }

我的样本csv就是

Item,LOB,CC
0029544090511,LOBJ17_0003559,PCC
0029544090511,LOBJ17_0003560,PCC

因此我希望每列都能导入,但我在SQL中得到了这个意外的。

item    lob cc  file_import_guid
@{Item=0029544090511; LOB=LOBJ17_0003559; CC=PCC}.Item  @{Item=0029544090511; LOB=LOBJ17_0003559; CC=PCC}.LOB   @{Item=0029544090511; LOB=LOBJ17_0003559; CC=PCC}.CC    7550d245-32b9-447a-bcfa-bbe6e7e22fd8
@{Item=0029544090511; LOB=LOBJ17_0003560; CC=PCC}.Item  @{Item=0029544090511; LOB=LOBJ17_0003560; CC=PCC}.LOB   @{Item=0029544090511; LOB=LOBJ17_0003560; CC=PCC}.CC    7550d245-32b9-447a-bcfa-bbe6e7e22fd8

guid似乎工作得很好所以它在对象循环中的东西。我尝试更改为简单的foreach循环,但得到相同的结果。当我尝试使用write-host命令检查我的数据时,它看起来很好(至少在屏幕上)

PS SQLSERVER:\> Import-CSV D:\sample.csv | ForEach-Object {write-host $_.Item $_.LOB $_.CC $ImportGUID}
0029544090511 LOBJ17_0003559 PCC e55019b0-d783-4fd8-9dda-0f409323e8bc
0029544090511 LOBJ17_0003560 PCC e55019b0-d783-4fd8-9dda-0f409323e8bc

有什么想法吗?

0 个答案:

没有答案