Translate

Thursday, September 6, 2012

TSql Export/Import Xml

For output as attributes
SELECT  [col_list]
FROM    [table]
FOR XML AUTO

For output as elements
SELECT  [col_list]
FROM     [table]
FOR XML AUTO, ELEMENTS

For output as elements binay
SELECT [col_list]
FROM [table]

FOR XML AUTO, BASE64 BINARY, ROOT('root')

DECLARE @myDoc xml
SET @myDoc = (
  SELECT *
  FROM OPENROWSET(BULK 'full_file_name.xml', SINGLE_CLOB) AS alias
)

Insert from XML

-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT @myDoc = bulkColumn
FROM OPENROWSET(BULK, 'file-name', SINGLE_CLOB) AS xmData
EXEC sp_xml_preparedocument @idoc OUTPUT, @myDoc
INSERT INTO [table_name]

(
   [col_def]
)


SELECT *
FROM OPENXML (@idoc, 'xpath-to-node', 0)-- 0 xml has attributes
WITH
(
   [col_def]
)

EXEC sp_xml_removedocument @idoc


Update from XML
EXEC sp_xml_preparedocument @idoc OUTPUT, @myDoc
UPDATE [table]
SET [col] = alias.[col]
FROM OPENXML (@idoc, 'xpath-to-node', 0)
WITH
(
  [col1] [col1_type],
  [col2] [col2_type]
) [alias]
WHERE [table].[col] = alias.[col]