Announcement

Collapse
No announcement yet.

Datenimport per xml "richtig" an den MSSQL-Server übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenimport per xml "richtig" an den MSSQL-Server übergeben

    hallo,
    ich würde gerne einen Datenimport für eine Datenbank schreiben und die zu importierenden Daten per xml übergeben.

    In Beispielen gesprochen bestehen die Zieltabellen aus 2 Tabellen (Wawi, Aufträge und Positionen). Vom Ansatz her würde ich genau eine xml-Datei bzw. VARCHAR(MAX) oder evtl. sogar Datentyp xml an den SQL-Server mittels SP übergeben.

    Jetzt würde ich gerne eine Transaktion beginnen und das xml auf meine 2 Tabellen verteilen. Sprich erst den Auftrag anlegen, den neuen Primärschlüssel ermitteln, dann die zugehörigen Positionen, zwischen durch evtl prüfen ob die Artikel da sind, wenn alles passt ein Commit für den Auftrag.


    Wie übergebe ich jedoch die Daten? Meine Zieltabelle ist ja normalisiert. Gebe ich jeder xml Zeile nochmal die vollständigen Auftragsdaten mit oder kann ich innerhalb eines xml-Files normalisiert arbeiten dass ich meinen Auftrag nur einmal habe und dann weinen Verweis bei den Positionen auf die Auftrags-ID?

  • #2
    Hallo openshinok,

    Du kannst doch problemlos auch in XML die gleichen 1:n Beziehungen abbilden, wie Du sie in der Datenbank hast.

    Das hier ist ein durchaus gültiges XML Fragment mit mehreren Aufträgen, die wiederum 0-n Positionen haben:
    [highlight=xml]<Aufträge>
    <Auftrag Nummer="2009-10000" Datum="2009-12-02">
    <Position Pos="1" Artikel="4711" Menge="12"/>
    <Position Pos="2" Artikel="4712" Menge="100"/>
    </Auftrag>
    <Auftrag Nummer="2009-10001" Datum="2009-12-02">
    <Position/>
    </Auftrag>
    </Aufträge>[/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      hallo!
      achso, das habe ich mir gestern auch bei Microsoft angeschaut... Das machen die mit einem Subselect. (Also step 1 die Daten die bereits in der Tabelle sind als xml ausgeben, Verarbeitung testen und dann von externen System in dem getesteten xml liefern lassen)

      Dann muss ich mir nur noch anschauen wie ich diese Schreibweise am SQL-Server durchlaufen und verarbeiten kann.


      Dankeschön!

      Comment


      • #4
        siehe z. B. auch:
        http://sqlblog.com/blogs/michael_col...ml-part-2.aspx

        Comment

        Working...
        X