【发布时间】:2018-03-17 21:26:42
【问题描述】:
我正在编写一个简单的 powershell 脚本,将 XML 文件从文件夹插入 SQL Server 2012。但每次尝试插入 XML 时都会失败,并出现以下错误。在 Microsoft 文档中,他们正在插入 UTF-8 编码的 xml。当我手动将编码更改为“UTF-16”时,我能够插入 XML 数据。我需要做的是在不更改 UTF-8 编码的情况下插入 XML。谢谢。
错误:
使用“0”参数调用“ExecuteScalar”的异常:“XML 解析:第 1 行,字符 38,无法切换编码”
线
$InsertedID = $sqlCommand.ExecuteScalar()
表定义:
CREATE TABLE TESTXML
(
ID INT IDENTITY(1,1) NOT NULL,
FileName VARCHAR(200),
InsertedDate DATETIME DEFAULT GETDATE(),
InsertedBy VARCHAR(100) DEFAULT 'PS',
XML XML,
BLOB VARBINARY(MAX)
)
要解析的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<order xmlns="http://XXXXX/xml/impex/XXX/2006-10-31" order-no="XXX">
XML Data......
</order>
Powershell 脚本:
foreach($xmlfile in $xmlfiles){
[string]$xml = (Get-Content $xmlfile.FullName) -replace "'", "''"
$sqlCommand.Parameters[0].Value = $xmlfile.FullName
$sqlCommand.Parameters[1].Value = $xml
$InsertedID = $sqlCommand.ExecuteScalar()
"Inserted row ID $InsertedID for file " + $xmlfile.FullName
}
【问题讨论】:
标签: .net sql-server xml powershell encoding