martin089: Hat jemand Erfahrung mit dem Importieren von XML nach SQL-Server?

Hallo,

ich importiere mit der SQL-Server-Erweiterung SQLXML 3 XML-Daten in einen
SQL-Server. Dazu wird ein XDR-Schema verwendet.
In meinem XML File habe ich nun folgende Anweisung:

<xList>
<x>1</x>
<x>2</x>
</xList>

In dem Schema File steht folgendes:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:xml:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql" >

<ElementType name="x" dt:type="string" />

<ElementType name="yyy" sql:is-constant="1">
<element type="xList" />
</ElementType>

<ElementType name="keywordList"  sql:relation="xList">
<element type="x"  sql:field="x" />
</ElementType>

</Schema>

Ich bekomme folgende Fehlermeldung beim importversuch:

0x80004005</HResult><Description><![CDATA[Die Datenzuordnung zu Spalte 'x'
wurde bereits in den Daten gefunden. Stellen Sie sicher, dass zwei
verschiedene Schemadefinitionen nicht der gleichen Spalte zugeordnet
werden.]]></Description><Source>XML SAX Parser

Es liegt an den zwei Elementen x.
Um die komme ich in dem XML-File allerdings nich herum.

Hat jemand eine Lösung parat?

Danke Martin

  1. Wie importierst du? DTS??

    1. Wie importierst du? DTS??

      Ich habe SQLXML 3.0 installiert.
      Der Import findet dann offensichtlich mit einem XML SAX Parser statt.
      Die Grundlage ist das XDR Schema, dass das XML File und die Tabelle der DB verknüpft.

      Ok?

      Gruß Martin

      1. ok, leider hab ich keine Ahnung davon. Ich importiere Daten immer über den sql Enterprise Manager (mittels DTS Packages). Ob xml unterstützt wird weiss ich jedoch nicht. Es dürfte jedoch kein Problem sein die Daten zuerst zu transformieren und dann zu importieren.

        lg
        sut

        1. ich bin auch gerne für andere lösungen offen, nur:
          das xml file ist recht komplex und auch über umwege ist es mir noch nicht geglückt es in irgendeine andere form zu brigen.

          • beim impot in access gehen die attribute verloren, die verschiedenen tabellen werden erkannt
          • beim importieren in excel importiert er zwar alle daten, jedoch in einer einzigen tabelle
          • mein versuch über sqlxml3 hat soweit gut funktioniert, nur diese eine element macht ärger.

          um deinen vorschlag aufzugreifen, wie könnte man die xml daten denn am besten konvertieren?

          grüße martin

          1. da gibts mehrere Möglichkeiten.

            bspw:
            Mittels .net einfach ein dataset definieren und mit readxml das file einlesen. Danach kannst es dir gleich direkt auf den sql server schicken.

            NT: windoof, .net framework wird benötigt...

  2. Hallo,

    Es liegt an den zwei Elementen x.
    Um die komme ich in dem XML-File allerdings nich herum.

    Hat jemand eine Lösung parat?

    Nicht wirklich.
    Aber worüber du dir gedanken machen müsstest ist in diesem Fall die DB-Struktrur, welche offensichtlich nicht so ausgelegt ist, dass du zwei Werte einer Zelle zuordnen könntest (was mir so weit auch logisch erscheint)
    Ich weiss auch nicht, welche Bedeutung deine zwei <x> haben und ob du sie wirklich separat speichern möchtest.
    Kannst und willst am XML nicht ändern, muss du deine DB entsprechend erweitern, aber da kann ich dir leider nicht weiterhelfen. (ev. kannst du dir überlegen die zwei Werte vom x (da sie "eh" nur Strings sind)  mit Komma getrennt in der Zelle zu speichern)

    Grüße
    Thomas

    --
    Suftip: kennen Sie schon Pipolino's Clowntheater?
    http://www.clowntheater-pipolino.net/