January 9, 2019 at 5:46 pm
md44 - Wednesday, January 9, 2019 2:17 PMEirikur Eiriksson - Wednesday, January 9, 2019 5:53 AMYou are duplicating the results by applying the nodes method multiple times to the same elements.
😎This is an example of the query without any duplication.
USE TEEST;
GO
SET NOCOUNT ON;DECLARE @TXML XML = N'<?xml version="1.0" encoding="UTF-16"?>
<PIES xmlns="http://www.aftermarket.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Header>
<PIESVersion>6.5</PIESVersion>
<BlanketEffectiveDate>2018-11-06</BlanketEffectiveDate>
<ParentAAIAID>CTLL</ParentAAIAID>
<BrandOwnerAAIAID>DHQD</BrandOwnerAAIAID>
</Header>
<Items>
<Item MaintenanceType="C">
<BaseItemID>86-374GROEM</BaseItemID>
<PartNumber>86-374GROEM</PartNumber>
<BrandAAIAID>DHQD</BrandAAIAID>
<BrandLabel>Recochem</BrandLabel>
<PartTerminologyID>11393</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">OEM Premium Extended Life Green Antifreeze / Coolant</Description>
</Descriptions>
<Packages>
<Package MaintenanceType="C">
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="CM">
<Height>28.7</Height>
<Width>11.5</Width>
<Length>18.8</Length>
</Dimensions>
<Weights UOM="KG">
<Weight>4.58</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>86-374GROEM_GREEN_1.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/71E/86-374GROEM_GREEN_1.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
<Item MaintenanceType="C">
<BaseItemID>86-384GROEMH</BaseItemID>
<PartNumber>86-384GROEMH</PartNumber>
<BrandAAIAID>DHQD</BrandAAIAID>
<BrandLabel>Recochem</BrandLabel>
<SubBrandAAIAID />
<PartTerminologyID>11393</PartTerminologyID>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>86-384GROEMH_GREEN_50-50_1.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/71E/86-384GROEMH_GREEN_50-50_1.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
</Items>
<Trailer>
<ItemCount>35</ItemCount>
<TransactionDate>2018-11-06</TransactionDate>
</Trailer>
</PIES>';
DECLARE @XML_TABLE TABLE (XML_DATA XML NOT NULL);
INSERT INTO @XML_TABLE (XML_DATA) VALUES (@TXML);;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID,
Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber,
Item.DATA.value('(Descriptions/Description/text())[1]' ,'varchar(100)' ) AS Descrip,
Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS URI
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header') Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item') Item(DATA);You make it look so easy 🙂 Thank you so much. Truly appreciate the help!
One quick question. Some of the elements contain multiple descriptions an images (example below).
<?xml version="1.0" encoding="UTF-16"?>
<PIES xmlns="http://www.aftermarket.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Header>
<PIESVersion>6.5</PIESVersion>
<SubmissionType>FULL</SubmissionType>
<BlanketEffectiveDate>2018-11-07</BlanketEffectiveDate>
<ParentAAIAID>CSNQ</ParentAAIAID>
<BrandOwnerAAIAID>BGND</BrandOwnerAAIAID>
<CurrencyCode>USD</CurrencyCode>
<LanguageCode>EN</LanguageCode>
</Header>
<Items>
<Item MaintenanceType="C">
<HazardousMaterialCode>N</HazardousMaterialCode>
<PartNumber>138750</PartNumber>
<BrandAAIAID>BGND</BrandAAIAID>
<BrandLabel>Superchips</BrandLabel>
<SubBrandAAIAID/>
<MinimumOrderQuantity UOM="EA">1</MinimumOrderQuantity>
<PartTerminologyID>12027</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">VIVID LINQ Programmer</Description>
<Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">CpChipProgmer</Description>
</Descriptions>
<ExtendedInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="LIF" LanguageCode="EN">4</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
</ExtendedInformation>
<Packages>
<Package MaintenanceType="C">
<PackageLevelGTIN>853118003100</PackageLevelGTIN>
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="IN">
<Height>2.75</Height>
<Width>6.25</Width>
<Length>9.5</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>2</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>0000368_300.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/SCS/0000368_300.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
<Item MaintenanceType="C">
<HazardousMaterialCode>N</HazardousMaterialCode>
<PartNumber>3855</PartNumber>
<BrandAAIAID>BGND</BrandAAIAID>
<BrandLabel>Superchips</BrandLabel>
<SubBrandAAIAID/>
<MinimumOrderQuantity UOM="EA">1</MinimumOrderQuantity>
<PartTerminologyID>12027</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">Flashpaq Programmer</Description>
<Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">CpChipProgmer</Description>
</Descriptions>
<ExtendedInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="LIF" LanguageCode="EN">4</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
</ExtendedInformation>
<Packages>
<Package MaintenanceType="C">
<PackageLevelGTIN>894520001681</PackageLevelGTIN>
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="IN">
<Height>2.5</Height>
<Width>6</Width>
<Length>5</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>0.8</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>0000200_300.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/SCS/0000200_300.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
</Items>
</PIES>
This query does not show the multiple descriptions - it only shows the first. I assume because I am asking for a singleton using [1]. Can this be modified to return ALL description and ALL images? I'm ok if the other records are duplicated
�. Query Below:
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID,
Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber,
Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel,
Item.DATA.value('(Descriptions/Description/text())[1]' ,'varchar(100)' ) AS Descrip,
Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length,
Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width,
Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height,
Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight,
Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1,
Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header') Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item') Item(DATA)
January 10, 2019 at 12:51 am
Few options, here are three of them.
😎
USE TEEST;
GO
SET NOCOUNT ON;
-- https://www.sqlservercentral.com/Forums/2013480/Problem-reading-all-Attributes-into-SQL-table
DECLARE @TXML XML = N'<?xml version="1.0" encoding="UTF-16"?>
<PIES xmlns="http://www.aftermarket.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Header>
<PIESVersion>6.5</PIESVersion>
<SubmissionType>FULL</SubmissionType>
<BlanketEffectiveDate>2018-11-07</BlanketEffectiveDate>
<ParentAAIAID>CSNQ</ParentAAIAID>
<BrandOwnerAAIAID>BGND</BrandOwnerAAIAID>
<CurrencyCode>USD</CurrencyCode>
<LanguageCode>EN</LanguageCode>
</Header>
<Items>
<Item MaintenanceType="C">
<HazardousMaterialCode>N</HazardousMaterialCode>
<PartNumber>138750</PartNumber>
<BrandAAIAID>BGND</BrandAAIAID>
<BrandLabel>Superchips</BrandLabel>
<SubBrandAAIAID />
<MinimumOrderQuantity UOM="EA">1</MinimumOrderQuantity>
<PartTerminologyID>12027</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">VIVID LINQ Programmer</Description>
<Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">CpChipProgmer</Description>
</Descriptions>
<ExtendedInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="LIF" LanguageCode="EN">4</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
</ExtendedInformation>
<Packages>
<Package MaintenanceType="C">
<PackageLevelGTIN>853118003100</PackageLevelGTIN>
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="IN">
<Height>2.75</Height>
<Width>6.25</Width>
<Length>9.5</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>2</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>0000368_300.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/SCS/0000368_300.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
<Item MaintenanceType="C">
<HazardousMaterialCode>N</HazardousMaterialCode>
<PartNumber>3855</PartNumber>
<BrandAAIAID>BGND</BrandAAIAID>
<BrandLabel>Superchips</BrandLabel>
<SubBrandAAIAID />
<MinimumOrderQuantity UOM="EA">1</MinimumOrderQuantity>
<PartTerminologyID>12027</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">Flashpaq Programmer</Description>
<Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">CpChipProgmer</Description>
</Descriptions>
<ExtendedInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="LIF" LanguageCode="EN">4</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
</ExtendedInformation>
<Packages>
<Package MaintenanceType="C">
<PackageLevelGTIN>894520001681</PackageLevelGTIN>
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="IN">
<Height>2.5</Height>
<Width>6</Width>
<Length>5</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>0.8</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>0000200_300.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/SCS/0000200_300.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
</Items>
</PIES>';
DECLARE @XML_TABLE TABLE (XML_DATA XML NOT NULL);
INSERT INTO @XML_TABLE (XML_DATA) VALUES (@TXML);
-- Option 1, fixed number of multiple-items
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID
,Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber
,Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel
,Item.DATA.value('(Descriptions/Description/text())[1]' ,'varchar(100)' ) AS Descrip1
,Item.DATA.value('(Descriptions/Description/text())[2]' ,'varchar(100)' ) AS Descrip2
,Item.DATA.value('(Descriptions/Description/text())[3]' ,'varchar(100)' ) AS Descrip3
,Item.DATA.value('(Descriptions/Description/text())[4]' ,'varchar(100)' ) AS Descrip4
,Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length
,Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width
,Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height
,Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header' ) Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item') Item(DATA);
-- Option 2, unlimited number of items
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID
,Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber
,Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel
,Descr.DATA.value('(./text())[1]' ,'varchar(100)' ) AS Descrip1
,Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length
,Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width
,Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height
,Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header' ) Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item' ) Item(DATA)
CROSS APPLY Item.DATA.nodes('Descriptions/Description') Descr(DATA);
-- Option 3, multiple items as single XML blob
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID
,Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber
,Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel
,Item.DATA.query('Descriptions/*' ) AS DescripXML
,Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length
,Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width
,Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height
,Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header') Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item') Item(DATA);
January 10, 2019 at 3:07 am
Eirikur Eiriksson - Thursday, January 10, 2019 12:51 AMFew options, here are three of them.
😎
USE TEEST;
GO
SET NOCOUNT ON;
-- https://www.sqlservercentral.com/Forums/2013480/Problem-reading-all-Attributes-into-SQL-table
DECLARE @TXML XML = N'<?xml version="1.0" encoding="UTF-16"?>
<PIES xmlns="http://www.aftermarket.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Header>
<PIESVersion>6.5</PIESVersion>
<SubmissionType>FULL</SubmissionType>
<BlanketEffectiveDate>2018-11-07</BlanketEffectiveDate>
<ParentAAIAID>CSNQ</ParentAAIAID>
<BrandOwnerAAIAID>BGND</BrandOwnerAAIAID>
<CurrencyCode>USD</CurrencyCode>
<LanguageCode>EN</LanguageCode>
</Header>
<Items>
<Item MaintenanceType="C">
<HazardousMaterialCode>N</HazardousMaterialCode>
<PartNumber>138750</PartNumber>
<BrandAAIAID>BGND</BrandAAIAID>
<BrandLabel>Superchips</BrandLabel>
<SubBrandAAIAID />
<MinimumOrderQuantity UOM="EA">1</MinimumOrderQuantity>
<PartTerminologyID>12027</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">VIVID LINQ Programmer</Description>
<Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">CpChipProgmer</Description>
</Descriptions>
<ExtendedInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="LIF" LanguageCode="EN">4</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
</ExtendedInformation>
<Packages>
<Package MaintenanceType="C">
<PackageLevelGTIN>853118003100</PackageLevelGTIN>
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="IN">
<Height>2.75</Height>
<Width>6.25</Width>
<Length>9.5</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>2</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>0000368_300.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/SCS/0000368_300.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
<Item MaintenanceType="C">
<HazardousMaterialCode>N</HazardousMaterialCode>
<PartNumber>3855</PartNumber>
<BrandAAIAID>BGND</BrandAAIAID>
<BrandLabel>Superchips</BrandLabel>
<SubBrandAAIAID />
<MinimumOrderQuantity UOM="EA">1</MinimumOrderQuantity>
<PartTerminologyID>12027</PartTerminologyID>
<Descriptions>
<Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">Flashpaq Programmer</Description>
<Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">CpChipProgmer</Description>
</Descriptions>
<ExtendedInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="LIF" LanguageCode="EN">4</ExtendedProductInformation>
<ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
</ExtendedInformation>
<Packages>
<Package MaintenanceType="C">
<PackageLevelGTIN>894520001681</PackageLevelGTIN>
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Dimensions UOM="IN">
<Height>2.5</Height>
<Width>6</Width>
<Length>5</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>0.8</Weight>
</Weights>
</Package>
</Packages>
<DigitalAssets>
<DigitalFileInformation MaintenanceType="C" LanguageCode="EN">
<FileName>0000200_300.jpg</FileName>
<AssetType>P04</AssetType>
<FileType>JPG</FileType>
<URI>https://images.wrenchead.com/smartpages/partinfo_resize/SCS/0000200_300.jpg</URI>
<FileDateModified>2018-10-01</FileDateModified>
<Country>US</Country>
</DigitalFileInformation>
</DigitalAssets>
</Item>
</Items>
</PIES>';
DECLARE @XML_TABLE TABLE (XML_DATA XML NOT NULL);
INSERT INTO @XML_TABLE (XML_DATA) VALUES (@TXML);-- Option 1, fixed number of multiple-items
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID
,Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber
,Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel
,Item.DATA.value('(Descriptions/Description/text())[1]' ,'varchar(100)' ) AS Descrip1
,Item.DATA.value('(Descriptions/Description/text())[2]' ,'varchar(100)' ) AS Descrip2
,Item.DATA.value('(Descriptions/Description/text())[3]' ,'varchar(100)' ) AS Descrip3
,Item.DATA.value('(Descriptions/Description/text())[4]' ,'varchar(100)' ) AS Descrip4
,Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length
,Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width
,Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height
,Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header' ) Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item') Item(DATA);-- Option 2, unlimited number of items
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID
,Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber
,Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel
,Descr.DATA.value('(./text())[1]' ,'varchar(100)' ) AS Descrip1
,Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length
,Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width
,Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height
,Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header' ) Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item' ) Item(DATA)
CROSS APPLY Item.DATA.nodes('Descriptions/Description') Descr(DATA);-- Option 3, multiple items as single XML blob
;WITH XMLNAMESPACES (DEFAULT 'http://www.aftermarket.org')
SELECT
Header.DATA.value('(ParentAAIAID/text())[1]' ,'varchar(50)' ) AS ParentAAIAID
,Item.DATA.value('(PartNumber/text())[1]' ,'varchar(50)' ) AS PartNumber
,Item.DATA.value('(BrandLabel/text())[1]' ,'varchar(50)' ) AS BrandLabel
,Item.DATA.query('Descriptions/*' ) AS DescripXML
,Item.DATA.value('(Packages/Package/Dimensions/Length/text())[1]' ,'varchar(100)' ) AS Length
,Item.DATA.value('(Packages/Package/Dimensions/Width/text())[1]' ,'varchar(100)' ) AS Width
,Item.DATA.value('(Packages/Package/Dimensions/Height/text())[1]' ,'varchar(100)' ) AS Height
,Item.DATA.value('(Packages/Package/Weights/Weight/text())[1]' ,'varchar(100)' ) AS Weight
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/URI/text())[1]' ,'varchar(100)' ) AS Image1
,Item.DATA.value('(DigitalAssets/DigitalFileInformation/AssetType/text())[1]' ,'varchar(100)' ) AS AssetType
FROM @XML_TABLE TX
CROSS APPLY TX.XML_DATA.nodes('PIES/Header') Header(DATA)
CROSS APPLY TX.XML_DATA.nodes('PIES/Items/Item') Item(DATA);
This works. Again, thank you so much!.
January 10, 2019 at 3:21 am
You are very welcome.
😎
January 10, 2019 at 5:31 am
Replace:
FROM @TXML.nodes('ACES/App') APP(DATA);
With something like this:
FROM dbo.XML_Staging AS stg
CROSS APPLY stg.TXML.nodes('ACES/App') APP(DATA);
January 10, 2019 at 5:37 am
mfconners - Thursday, January 10, 2019 5:31 AMReplace:
FROM @TXML.nodes('ACES/App') APP(DATA);With something like this:
FROM dbo.XML_Staging AS stg
CROSS APPLY stg.TXML.nodes('ACES/App') APP(DATA);
I was posting from and I didn't see the additional pages of response. Please ignore me. 😐
Viewing 6 posts - 31 through 35 (of 35 total)
You must be logged in to reply to this topic. Login to reply