我正试图将csv文件中的数据插入SQL Server中的表中,其中一列的数据类型为uniqueidentifier
csv文件中的数据是一个guid,我可以将guid复制并粘贴到uniqueidentifier列中,因此数据是有效的,但当我尝试通过powershell加载数据时,我会得到以下错误
写入SqlTableData:无法将数据源中类型为String的给定值转换为指定目标列的类型uniqueidentifier。
以下是我加载数据的失败尝试。
$rows = Import-Csv -Path $csv
$rows | Select-Object string,
@{name="GUID";expression={ [string]$_.String }},
@{name="Company";expression={ [string]$_.String }},
@{name="Modified";expression={ [datetime]$_.DateTime }}
$rows | Write-SqlTableData ....
如果有人能帮我指明正确的方向,那就太好了!
您只需要在写入数据类型之前将其强制转换为[guid]
。
如果你的csv看起来像这样,例如:
GUID,Company,Modified
00000000-0000-0000-0000-000000000000,CorpA,2022-10-10
11111111-1111-1111-1111-111111111111,CorpB,2022-11-11
etc...
然后,您应该能够将csv输入转换为guid,如下所示:
$rows = Import-Csv -Path $csv |
Select-Object @{n="GUID";e={[guid]$_.GUID}},
Company,
@{n="DateTime";e={[DateTime]$_.DateTime}}
$rows | Write-SqlTableData ....
如果您也使用powershell生成CSV,那么您可能更喜欢Export-Clixml
和Import-Clixml
命令,因为它们将保持数据类型不变,而不是转换为字符串