Inhoud XML opslaan in SQL database

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

  • Zorg
  • Registratie: Maart 2001
  • Laatst online: 23:58
Ik kom er echt niet meer uit... zit al een week lang van alles te proberen maar helaas lukt het me nog niet zo goed.

Ik volg de volgende stappen:
Ik begin met het aanmaken van een tabel in sql
code:
1
2
3
USE MyDatabase
CREATE TABLE T (IntCol int, XmlCol xml)
GO


Daarna geef ik de opdracht om de inhoud naar de tabel T te kopieren:
code:
1
2
3
4
INSERT INTO T(XmlCol)
SELECT * FROM OPENROWSET(
   BULK 'c:\test\SampleData3.txt',
   SINGLE_BLOB) AS x


Maar als ik dit doe dan wordt de hele xml inhoud naar 1 kolom gekopieerd. Wat ik graag wil is de inhoud van een xml file in een tabel krijgen zodat bewaard kan blijven (omdat de XML file steeds verandert) (los van het feit dat ik het bestand niet .xml kan noemen dan werkt het ook niet maar dit is even als voorbeeld van wat ik niet wil ;))

Dit is b.v. mijn xml file (c:\test\books.xml)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<books>
  <book price="34.95">
    <title>Teach Yourself Active Server Pages 3.0 in 21 Days</title>
    <authors>
      <author>Mitchell</author>
      <author>Atkinson</author>
    </authors>
    <year>1999</year>
  </book>

  <book price="29.95">
    <title>Designing Active Server Pages</title>
    <authors>
      <author>Mitchell</author>
    </authors>
    <year>2000</year>
  </book>
</books>


Deze wil ik kopieren naar een tabel:
code:
1
2
3
Price    Title                           Author1    Author 2   Author 3    Year
34.95   Teach Yourself...         Mitchell    Atkinson                   1999
29.95   Designing                   Mitchell                                    2000


Volgens mij moet dit wel kunnen maar ik heb geen idee hoe en op welke termonologie te zoeken... oude topics kom ik allemaal op xml vanuit een sql database of xml in het geheel invoegen. MSDN zit ik ook al tijden op te zoeken maar ook nergens de juiste info gevonden.

[ Voor 11% gewijzigd door Zorg op 27-10-2007 15:57 ]

Mijn hobby projectjes: www.agenticprojects.be


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:54

Cyphax

Moderator LNX
Je kunt met een query uit XML selecteren. Ziet er ongeveer zo uit:
SQL:
1
2
3
4
INSERT INTO Orders( CustomerID, EmployeeID, OrderDate, RequiredDate ) 
  SELECT CustomerID, EmployeeID, OrderDate, RequiredDate 
  FROM Openxml( @docHandle, '/Order', 3) WITH ( CustomerID nchar(5), 
  EmployeeID int,   OrderDate datetime, RequiredDate datetime   )

Is dat wat je zoekt?
http://www.codeproject.com/cs/database/insxmldatasqlsvr.asp

Saved by the buoyancy of citrus


  • Zorg
  • Registratie: Maart 2001
  • Laatst online: 23:58
Als ik het zo even vluchtig doorlees dan denk ik inderdaad dat het daarmee zou kunnen lukken. Zal vanavond het eens even beter bekijken maar vond inderdaad elders ook al de oplossing openxml die hier ook gebruikt wordt.

Misschien dat daar mijn fout zit dat ik het via bulkxml probeer en ik het beter via open xml kan importeren in mijn tabel

Mijn hobby projectjes: www.agenticprojects.be


  • Zorg
  • Registratie: Maart 2001
  • Laatst online: 23:58
Afbeeldingslocatie: http://msdn2.microsoft.com/en-us/library/ms175160.4292b668-e781-4041-8169-2f8b28d08c4b(en-US,SQL.90).gif

Openxml is indd precies wat ik bedoel :D Hoe simpel een kernwoord toch kan zijn (ik had dus nooit gedacht aan OPENXML)

Voor mensen die ook ooit zoiets zoeken:
http://msdn2.microsoft.com/en-us/library/ms175160.aspx


@Cyphex: bedankt :D

Mijn hobby projectjes: www.agenticprojects.be