declare @xmlText xml declare @club varchar(50) DECLARE @idoc int set @xmlText = (select doc from openrowset(bulk 'D:\RF_Integration\Code\Import\RF.Integration.Import.BusinessLogic\bin\Debug\ModifiedPackageFiles\golf_b6dd63fb30f84a9b941a9cdcbbacb30f_201209041607[007-004].xml',single_blob) as t(doc)) EXEC sp_xml_preparedocument @idoc OUTPUT,@xmlText set @club='golf' insert into [dbo].Address_Temp([AddressType] ,[Country],[PostalCity] ,[PostalNumber],[Street],[CO_Address],[PersonID],[PersonNum],[PersonOptType]) select [AddressType] ,[Country],[PostalCity] ,[PostalNumber],[Street],[CO_Address],[PersonID],[PersonalNumber] as [PersonNum],'Insert' as [PersonOptType] from openxml(@Idoc,'/persons/InsertRecord/Person/Addresses/Address',2) With( [AddressType] varchar(50), [Country] varchar(50), [PostalCity] varchar(50), [PostalNumber] varchar(50), [Street] varchar(50), [CO_Address] varchar(50), [PersonId] varchar(50) ..//..//PersonId',--(此處應該為單斜杠,應為blog編輯器寫單斜杠有問題,所以將其寫為雙斜杠) [PersonalNumber] varchar(50) '..//..//@PersonalNumber' )
上邊的代碼中, 數據庫直接讀取了xml文件,然后解析 xml 數據,將其保存到Address_Temp 表中,藍色文字部門,'..//..//PersonId' 表示單簽節點 上兩級節點 字段 PersonId 的值,如果帶上'@' ,表示屬性值。
具體的openxml 的用法,可以參看一下鏈接:http://www.cnblogs.com/wuming/archive/2010/01/18/1650755.html
http://technet.microsoft.com/zh-cn/ms175160.aspx