我有一个相当简单的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
有什么想法吗?