我在将.xml文件中的数据加载到SQL Server数据库时遇到问题。到目前为止,我一直在使用此查询:
BEGIN
DECLARE @XML AS XML,@hDoc AS INT
SELECT @XML = CONVERT(XML, BulkColumn)
FROM OPENROWSET(BULK 'D:\order2.xml', SINGLE_BLOB) AS x;
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
INSERT INTO [dbo].[Client]
SELECT *
FROM OPENXML(@hDoc, 'orderType/client')
WITH
(
OrderId varchar(200) '../../../sn',
Client_number varchar(200) 'client_number',
FirstName varchar(200) 'firstname',
LastName varchar(200) 'lastname',
E-Mail varchar(200) 'email'
)
EXEC sp_xml_removedocument @hDoc
END
但现在我想在一列中选择client_number
,firstname
和lastname
,所以它看起来像这样:
| Client |
| - - - - - - - - |
| 134 John Smith |
我真的很感谢你的帮助,我为凌乱的代码道歉,因为这是我在这里的第一个问题,在stackoverflow上。 谢谢!
答案 0 :(得分:0)
我现在没有系统可以尝试,但可能您可以使用CTE
从XML中提取值并将它们合并到主查询中,例如
WITH XMLVal AS (
SELECT *
FROM OPENXML(@hDoc, 'orderType/client')
WITH (OrderId varchar(200) '../../../sn',
Client_number varchar(200) 'client_number',
FirstName varchar(200) 'firstname',
LastName varchar(200) 'lastname',
E-Mail varchar(200) 'email'
)
)
INSERT INTO [dbo].[Client]
SELECT *, concat(Client_number, ' ', FirstName, ' ', LastName)
FROM XMLVal
我不确定SQLServer是否会喜欢WITH
中的第二个CTE