Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Inserting XML into SQL temp table

Author  Topic 

misterjp
Starting Member

4 Posts

Posted - 2011-02-23 : 22:09:58
I would like to import some XML data into a SQL temp table. A sample of the XML is as follows:

<Statement type="MLN">
<BadgeCode>00</BadgeCode>
<StatementPeriodFromDate>20110101</StatementPeriodFromDate>
<StatementPeriodToDate>20110131</StatementPeriodToDate>
<NominatedAdviserGroup>Blank Bank</NominatedAdviserGroup>
<AccountName>MR J SMITH & MRS J SMITH</AccountName>
<AddressLine1>1703 Evergreen Terrace</AddressLine1>
<Location>Springfield</Location>
<PostCode>E23300</PostCode>
<FacilityNumber>Z772957</FacilityNumber>
</Statement>

What is the SQL syntax to use to get it into a table where each XML row represents it's own column in a temporary SQL table.

SwePeso
Patron Saint of Lost Yaks

30421 Posts

Posted - 2011-02-24 : 01:34:39
Are you using SPARSE columns and/or a COLUMN SET?



N 56°04'39.26"
E 12°55'05.63"
Go to Top of Page

SwePeso
Patron Saint of Lost Yaks

30421 Posts

Posted - 2011-02-24 : 01:40:59
Try this
DECLARE	@Parameter XML = N'<Statement type="MLN">
<BadgeCode>00</BadgeCode>
<StatementPeriodFromDate>20110101</StatementPeriodFromDate>
<StatementPeriodToDate>20110131</StatementPeriodToDate>
<NominatedAdviserGroup>Blank Bank</NominatedAdviserGroup>
<AccountName>MR J SMITH & MRS J SMITH</AccountName>
<AddressLine1>1703 Evergreen Terrace</AddressLine1>
<Location>Springfield</Location>
<PostCode>E23300</PostCode>
<FacilityNumber>Z772957</FacilityNumber>
</Statement>'

/*
INSERT dbo.Table1
(
StatementType,
BadgeCode,
StatementPeriodFromDate,
StatementPeriodToDate,
NominatedAdviserGroup,
AccountName,
AddressLine1,
Location,
PostCode,
FacilityNumber
)
*/
SELECT n.value('@type', 'VARCHAR(3)') AS StatementType,
n.value('BadgeCode[1]', 'VARCHAR(2)') AS BadgeCode,
n.value('StatementPeriodFromDate[1]', 'DATE') AS StatementPeriodFromDate,
n.value('StatementPeriodToDate[1]', 'DATE') AS StatementPeriodToDate,
n.value('NominatedAdviserGroup[1]', 'VARCHAR(20)') AS NominatedAdviserGroup,
n.value('AccountName[1]', 'VARCHAR(100)') AS AccountName,
n.value('AddressLine1[1]', 'VARCHAR(100)') AS AddressLine1,
n.value('Location[1]', 'VARCHAR(40)') AS Location,
n.value('PostCode[1]', 'VARCHAR(8)') AS PostCode,
n.value('FacilityNumber[1]', 'VARCHAR(10)') AS FacilityNumber
FROM @Parameter.nodes('/Statement') AS p(n)



N 56°04'39.26"
E 12°55'05.63"
Go to Top of Page
   

- Advertisement -