【发布时间】:2021-04-19 20:55:08
【问题描述】:
我正在使用 Invoke-SqlCmd 将数据从 json 文件插入到 SQL Server 表中,并使用如下存储过程:
Invoke-SqlCmd -ServerInstance $servername -Database $database -Query "EXEC dbo.InsertDataFromJson @JSON='$json'
通过获取原始内容获得 json:
$json = Get-Content -Path "path\to.json" -Raw
$json # Content:
'{"Id": "2fe2353a-ddd7-479a-aa1a-9c2860680477",
"RecordType": 20,
"CreationTime": "2021-02-14T08:32:23Z",
"Operation": "ViewDashboard",
"UserKey": "10099",
"Workload": "PowerBI",
"UserId": "102273335@gmail.com",
"ItemName": "テスト",
"WorkSpaceName": "My Workspace",
"DashboardName": "テスト",
"ObjectId": "テスト" }'
所有包含字符串、电子邮件和日文字符的列都是 NVARCHAR(MAX)。
问题是我的 json 包含日文字符,它们显示为 ????在表中。
当我尝试直接使用 SSMS 插入样本时,它工作正常。
你知道如何解决这个问题吗?
谢谢
【问题讨论】:
-
你有 json 文件中内容的例子吗?可能是编码错误。
-
json 文件的编码是“UCS-2 LE BOM”。但正如你所看到的,我从中提取内容 Get-Content 并且日文字符在那里。
-
从你的帖子中我不知道 $json 变量的值。
-
这里是一个例子:'{ "Id": "2fe2353a-ddd7-479a-aa1a-9c2860680477", "RecordType": 20, "CreationTime": "2021-02-14T08:32: 23Z”、“操作”:“ViewDashboard”、“UserKey”:“10099”、“工作负载”:“PowerBI”、“UserId”:“102273335@gmail.com”、“ItemName”:“テスト”、“WorkSpaceName” :“我的工作区”,“仪表板名称”:“テスト”,“ObjectId”:“テスト”}'
-
您可以使用示例编辑您的帖子,并为您的表提供架构以反映其中的数据类型吗?特别是具有错误编码值的列。
标签: sql json powershell invoke-sqlcmd