2013-06-06 4 views
0

I ont des données XML au format:Enregistrement de données XML dans une table

<Display> 
<StoreCode>1234</StoreCode> 
<TerminalID>02</TerminalID> 
<TrnsNo></TrnsNo> 
<Date>03-05-2013</Date> 
<Time>11:30</Time> 
<Vdtls> 
    <VID>VVB0000015</VID> 
    <VID>VVB0000016</VID> 
</Vdtls> 
</Display> 

J'ai stocké ces données XML dans une colonne d'une table. Maintenant, je veux analyser ce XML et le stocker dans une autre table qui a la structure.

CREATE TABLE [dbo].[temp_XMLreceivedData] 
(
[StoreCode] [int] NULL, 
[TerminalId] [int] NULL, 
[TransactionNo] [varchar](10) NULL, 
[RequestDate] [date] NULL, 
[RequestTime] [char](5) NULL, 
[VoucherDetails] [varchar](10) NULL 
) 

Comment y parvenir?

+1

Vous devez utiliser les fonctions XML que MySQL fournit http://dev.mysql.com/doc/refman/5.5/fr/xml-functions.html Publié dans un commentaire parce que je n'ai pas installé MySQL pour tester – gbn

+0

Je crois que vous avez utilisé la mauvaise balise. Vous dites que c'est MySQL mais à en juger par l'instruction 'CREATE TABLE', il s'agit en fait de SQL Server. –

+0

Erik: Oui créer une instruction de table est de MYSQl car je ne suis pas au courant de MYSQL et dois effectuer cette chose mysql –

Répondre

0

Essayez le code suivant

insert into temp_XMLreceivedData 
select 
a.b.value('(StoreCode/node())[1]','VARCHAR(10)') , 
a.b.value('(TerminalID/node())[1]','VARCHAR(100)'), 
a.b.value('(TrnsNo/node())[1]','VARCHAR(100)') , 
a.b.value('(Date/node())[1]','VARCHAR(100)') , 
a.b.value('(Time/node())[1]','VARCHAR(100)') , 
a.b.value('(Vdtls/VID/node())[1]','VARCHAR(100)') 
from @XmlTbl.nodes('Display') as a(b) 
+0

son ne fonctionne pas .... Query: insérez dans temp_XMLdatadetails sélectionnez abvalue ('(StoreCode/node()) [1]', 'VARCHAR (10)'), abvalue ('(TerminalID/node()) [ 1] ',' V ... Code d'erreur: 1064 Vous avez une erreur dans votre syntaxe SQL, consultez le manuel correspondant à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '(' (StoreCode/node()) [1] ',' VARCHAR (10) '), abvalue (' (TerminalID/node()) [1] ',' VA 'à la ligne 3 Execution Time: 00: 00: 00: 000 Transfert Heure: 00: 00: 00: 000 temps total: 00: 00: 00: 000 –

+0

@XMLTbl est utilisé dans quel but –

+0

est la structure de la table ici où j'ai stockée XML: CREATE TABLE test_xml ( \t ID INT, \t xmldata \t TEXT) –

0

Je chose tout le code est le suivant

declare @XmlTbl xml 

select top(1) @XmlTbl=cast(cast(xmldata as nText) as xml) from test_xml 

insert into temp_XMLreceivedData 
select 
a.b.value('(StoreCode/node())[1]','VARCHAR(10)') , 
a.b.value('(TerminalID/node())[1]','VARCHAR(100)'), 
a.b.value('(TrnsNo/node())[1]','VARCHAR(100)') , 
a.b.value('(Date/node())[1]','VARCHAR(100)') , 
a.b.value('(Time/node())[1]','VARCHAR(100)') , 
a.b.value('(Vdtls/VID/node())[1]','VARCHAR(100)') 
from @XmlTbl.nodes('Display') as a(b) 

ce code fonctionne pour une seule donnée. en bouclant la table si vous insérez toutes les données de données

Questions connexes