将 XML table 插入 SQL table
Inserting a XML table into a SQL table
我正在尝试将 XML 文件放入 SQL table。我已经使用以下代码成功地将 XML 文件放入 SQL 服务器:
declare @xmldata as xml
set @xmldata = (SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn
FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X)
下面的代码片段是我出错的地方。我知道我必须使用 INSERT INTO 语句,但我不确定我哪里出错了。
INSERT INTO t1(c1, c2, c3)
SELECT
c1 AS 'c1',
c2 AS 'c2',
c3 as 'c3'
我目前正在使用 SQL Server 2005。
XML 文件如下所示
<row>
<c1> DATA </c1>
<c2> DATA </c2>
<c3> DATA </c3>
</row>
...
您最后的评论没有直接针对任何用户(例如 @Shnugo
),因此没有提醒。显然没有人发现您的编辑...
不知道这是否仍然是一个悬而未决的问题,但这是一个答案:
这是您加载文件的方式
declare @xmldata as xml;
set @xmldata =
(
SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn
FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X
);
现在变量 @xmldata
应该包含 XML 就像您在编辑中发布的那样。只是为了测试,我将变量设置为一些合适的内容:
SET @xmldata=
'<root>
<row>
<c1>DATA1</c1>
<c2>DATA2</c2>
<c3>DATA3</c3>
</row>
<row>
<c1>DATA4</c1>
<c2>DATA5</c2>
<c3>DATA6</c3>
</row>
</root>';
现在我创建一个临时文件 table 来测试插入
CREATE TABLE #t1(c1 VARCHAR(100),c2 VARCHAR(100),c3 VARCHAR(100));
这是插入数据的方式:
INSERT INTO #t1
SELECT One.Rw.value('c1[1]','varchar(100)')
,One.Rw.value('c2[1]','varchar(100)')
,One.Rw.value('c3[1]','varchar(100)')
FROM @xmldata.nodes('/root/row') AS One(Rw);
SELECT * FROM #t1;
GO
DROP TABLE #t1;
这是结果:
c1 c2 c3
DATA1 DATA2 DATA3
DATA4 DATA5 DATA6
我正在尝试将 XML 文件放入 SQL table。我已经使用以下代码成功地将 XML 文件放入 SQL 服务器:
declare @xmldata as xml
set @xmldata = (SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn
FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X)
下面的代码片段是我出错的地方。我知道我必须使用 INSERT INTO 语句,但我不确定我哪里出错了。
INSERT INTO t1(c1, c2, c3)
SELECT
c1 AS 'c1',
c2 AS 'c2',
c3 as 'c3'
我目前正在使用 SQL Server 2005。
XML 文件如下所示
<row>
<c1> DATA </c1>
<c2> DATA </c2>
<c3> DATA </c3>
</row>
...
您最后的评论没有直接针对任何用户(例如 @Shnugo
),因此没有提醒。显然没有人发现您的编辑...
不知道这是否仍然是一个悬而未决的问题,但这是一个答案:
这是您加载文件的方式
declare @xmldata as xml;
set @xmldata =
(
SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn
FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X
);
现在变量 @xmldata
应该包含 XML 就像您在编辑中发布的那样。只是为了测试,我将变量设置为一些合适的内容:
SET @xmldata=
'<root>
<row>
<c1>DATA1</c1>
<c2>DATA2</c2>
<c3>DATA3</c3>
</row>
<row>
<c1>DATA4</c1>
<c2>DATA5</c2>
<c3>DATA6</c3>
</row>
</root>';
现在我创建一个临时文件 table 来测试插入
CREATE TABLE #t1(c1 VARCHAR(100),c2 VARCHAR(100),c3 VARCHAR(100));
这是插入数据的方式:
INSERT INTO #t1
SELECT One.Rw.value('c1[1]','varchar(100)')
,One.Rw.value('c2[1]','varchar(100)')
,One.Rw.value('c3[1]','varchar(100)')
FROM @xmldata.nodes('/root/row') AS One(Rw);
SELECT * FROM #t1;
GO
DROP TABLE #t1;
这是结果:
c1 c2 c3
DATA1 DATA2 DATA3
DATA4 DATA5 DATA6