Discussion:
Aus XML Schema Tabelle in MS SQL 2005 erstellen
(zu alt für eine Antwort)
AZUL
2005-10-20 18:50:09 UTC
Permalink
Hallo,
ich sitze vor folgendem Problem: Ich möchte Daten aus einer XML Datei und
dessen Schema über ein DataSet an die SQL Datenbank schicken. Ist die
Tabelle mit den entsprechenden Spalten bereits vorhanden, trägt er die
Datensätze ein (Update - Funktion). Bloß wie mache ich das, wenn die Tabelle
noch nicht vorhanden ist. Kann man die mit vb.net erstellen lassen?

Danke im Voraus! Stefan
Peter Fleischer
2005-10-20 19:28:40 UTC
Permalink
AZUL wrote:
...
Post by AZUL
ich sitze vor folgendem Problem: Ich möchte Daten aus einer XML Datei
und dessen Schema über ein DataSet an die SQL Datenbank schicken. Ist
die Tabelle mit den entsprechenden Spalten bereits vorhanden, trägt
er die Datensätze ein (Update - Funktion). Bloß wie mache ich das,
wenn die Tabelle noch nicht vorhanden ist. Kann man die mit vb.net
erstellen lassen?
CommandBuilder!

Peter
AZUL
2005-10-20 19:47:52 UTC
Permalink
Danke für die schnelle antwort,

aber kann ich nicht nur mit den CommandBuilder die Datenbank/ Tabelle
updaten? Weil eine neue Tabelle bekomm ich damit nicht in der Datenbank
erstellt!
Falls du eventuell ein Beispiel hättest wäre ich sehr dankbar.

Ansonsten muss ich weiter googlen!

Stefan
Peter Fleischer
2005-10-31 16:24:30 UTC
Permalink
AZUL wrote:
...
Post by AZUL
aber kann ich nicht nur mit den CommandBuilder die Datenbank/ Tabelle
updaten? Weil eine neue Tabelle bekomm ich damit nicht in der
Datenbank erstellt!
Falls du eventuell ein Beispiel hättest wäre ich sehr dankbar.
AZUL - in welchem Kulturkreis vergeben die Eltern solche Namen?

Eine neue Tabelle muss man natürlich mit den entsprechenden Mitteln anlegen.
In einem XML-Schema sind u.U. nicht alle Angaben entahlten, die für die
Erzeugung einer Tabelledefinition erforderlich sind. Außerdem kann das
Schema hierarchische Strukturen beschreiben. Der SQL Server kann aber nur
mit relationalen Tabellen umgehen. Aus diesem Grund gibt es keine
vorgefertigte Lösung für das Anlegen einer neuen Tabelle aus einem
XML-Schema. Das musst du selbst implementieren und ggf. zusätzliche
Festlegungen treffen, wie beispielsweise Feldlängen von Zeichenketten (z.B.
varchar).

Wenn die Tabelle vorhanden ist, dann kann man ein SelectCommand-Objekt
erzeugen, welches formale alle Felder genau entsprechend dem XML-File
auslesen kann. Mit dem CommandBuilder kann man dann auf dieser Basis die
anderen Command-Objekte erzeugen lassen.

Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und qualifiziert
und schnell beantwortet wird, wenn Du Deinen Realnamen im Absender
einstellst (Vor- und Zuname).

Peter
Stefan König
2005-11-03 18:16:35 UTC
Permalink
Hallo,
ich bin jetzt auf folgende 2 Geschichten aufmerksam geworden, die mein
Problem lösen könnten.
Einmal gibt es beim 2005er MS SQL Server den Datentyp XML - in diesem
schiebe ich meine XML Files, da ich vorher das Schema registriert habe, kann
ich nun mittels SQL und Xquery meine Anfragen stellen. Auch die Modifikation
der Daten intern im XML File ist recht komfortabel.
Die 2te Möglichkeit auf die ich gestoßen bin ist die NHibernate Geschichte -
was ja eine Portierung von Hibernate aus Java darstellt. Dies soll ja recht
komfortabel die XML Files als Tabellen in der Datenbank erstellen. Bin
leider noch nicht zum Testen gekommen, auch wegen der Performance hab ich
noch keine Aussagen gehört/ gelesen.

Vielleicht weiss ja hier jemand darüber bescheid, ob das so funktioniert????

MfG Stefan aka AZUL

PS: @ Peter - sorry hatte vorher in einer ander Newsgroup meinen Nick
verwendet !
Post by Peter Fleischer
...
Post by AZUL
aber kann ich nicht nur mit den CommandBuilder die Datenbank/ Tabelle
updaten? Weil eine neue Tabelle bekomm ich damit nicht in der
Datenbank erstellt!
Falls du eventuell ein Beispiel hättest wäre ich sehr dankbar.
AZUL - in welchem Kulturkreis vergeben die Eltern solche Namen?
Eine neue Tabelle muss man natürlich mit den entsprechenden Mitteln
anlegen. In einem XML-Schema sind u.U. nicht alle Angaben entahlten, die
für die Erzeugung einer Tabelledefinition erforderlich sind. Außerdem kann
das Schema hierarchische Strukturen beschreiben. Der SQL Server kann aber
nur mit relationalen Tabellen umgehen. Aus diesem Grund gibt es keine
vorgefertigte Lösung für das Anlegen einer neuen Tabelle aus einem
XML-Schema. Das musst du selbst implementieren und ggf. zusätzliche
Festlegungen treffen, wie beispielsweise Feldlängen von Zeichenketten
(z.B. varchar).
Wenn die Tabelle vorhanden ist, dann kann man ein SelectCommand-Objekt
erzeugen, welches formale alle Felder genau entsprechend dem XML-File
auslesen kann. Mit dem CommandBuilder kann man dann auf dieser Basis die
anderen Command-Objekte erzeugen lassen.
Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und
qualifiziert und schnell beantwortet wird, wenn Du Deinen Realnamen im
Absender einstellst (Vor- und Zuname).
Peter
Elmar Boye
2005-11-04 10:29:18 UTC
Permalink
Hallo Stefan,
Post by Stefan König
Einmal gibt es beim 2005er MS SQL Server den Datentyp XML - in diesem
schiebe ich meine XML Files, da ich vorher das Schema registriert
habe, kann ich nun mittels SQL und Xquery meine Anfragen stellen.
Auch die Modifikation der Daten intern im XML File ist recht
komfortabel.
Ob man das jedoch für eine ausschliessliche Datenspeicherung in
Betracht ziehen sollte, hängt von der Verwendung der Daten ab. In
http://msdn.microsoft.com/xml/default.aspx?pull=/library/en-us/dnsql90/html/sql25xmlbp.asp
XML Best Practices for Microsoft SQL Server 2005
wird u. a. darauf eingegangen.
Post by Stefan König
Die 2te Möglichkeit auf die ich gestoßen bin ist die NHibernate
Geschichte - was ja eine Portierung von Hibernate aus Java darstellt.
Dies soll ja recht komfortabel die XML Files als Tabellen in der
Datenbank erstellen.
Auch NHibernate oder andere können nur soviel leisten, wie aus
den Daten zu entnehmen ist. Und das wäre in etwa was das
DataSet.InferXmlSchema leisten kann. Wenn ein Xml Schema vorliegt
(XSD) wirds unter Umständen besser.
Nur sind auf der anderen Seite Dinge in XML möglich, die in einer
relationalen Datenbank so direkt nicht abgebildet werden können.

Gruss
Elmar
Stefan König
2005-11-07 19:36:53 UTC
Permalink
Hallo Elmar,
also das XSD ist vorhanden, das soll nicht das Problem sein. Nach dem Schema
ergeben sich die XML Dateien!
Ich würde zum jetzigen Zeitpunkt eine Speicherung als XMLtype vorziehen, da
die Struktur doch sehr komplex ist!
Und weil ich das nHibernate auf dem VisualStudio2005 Beta2 nicht zum laufen
bekommen, absurde Fehlermeldungen halten mich davon ab!
Währe schon froh, wenn mir jemand mit Bestimmtheit sagen könnte, das
nHibernate 1.0 fehlende Tabellen aus dem XSD Schema selbstständig erzeugen
würde?
Post by Elmar Boye
Hallo Stefan,
Post by Stefan König
Einmal gibt es beim 2005er MS SQL Server den Datentyp XML - in diesem
schiebe ich meine XML Files, da ich vorher das Schema registriert
habe, kann ich nun mittels SQL und Xquery meine Anfragen stellen.
Auch die Modifikation der Daten intern im XML File ist recht
komfortabel.
Ob man das jedoch für eine ausschliessliche Datenspeicherung in
Betracht ziehen sollte, hängt von der Verwendung der Daten ab. In
http://msdn.microsoft.com/xml/default.aspx?pull=/library/en-us/dnsql90/html/sql25xmlbp.asp
XML Best Practices for Microsoft SQL Server 2005
wird u. a. darauf eingegangen.
Post by Stefan König
Die 2te Möglichkeit auf die ich gestoßen bin ist die NHibernate
Geschichte - was ja eine Portierung von Hibernate aus Java darstellt.
Dies soll ja recht komfortabel die XML Files als Tabellen in der
Datenbank erstellen.
Auch NHibernate oder andere können nur soviel leisten, wie aus
den Daten zu entnehmen ist. Und das wäre in etwa was das
DataSet.InferXmlSchema leisten kann. Wenn ein Xml Schema vorliegt
(XSD) wirds unter Umständen besser.
Nur sind auf der anderen Seite Dinge in XML möglich, die in einer
relationalen Datenbank so direkt nicht abgebildet werden können.
Gruss
Elmar
Elmar Boye
2005-11-08 10:35:10 UTC
Permalink
Hallo Stefan,
Post by Stefan König
also das XSD ist vorhanden, das soll nicht das Problem sein. Nach dem
Schema ergeben sich die XML Dateien!
Nochmal bekräftigt: Nicht alles, was man in XML mit oder ohne XSD
darstellen kann - also was man gemeinhin well formed XML nennt,
lässt sich (ohne Nachhilfe) in eine relationale Struktur überführen.
Post by Stefan König
Und weil ich das nHibernate auf dem VisualStudio2005 Beta2 nicht zum
laufen bekommen, absurde Fehlermeldungen halten mich davon ab!
Wenn http://wiki.nhibernate.org/display/NH/Using+NHibernate+with+Visual+Studio+.NET
nicht funktioniert nimm Visual Studio 2003.
Oder warte bis die das für 2005 RTM ausgetestet haben
(nicht alle sind Beta Freaks).
Post by Stefan König
Währe schon froh, wenn mir jemand mit Bestimmtheit sagen könnte, das
nHibernate 1.0 fehlende Tabellen aus dem XSD Schema selbstständig
erzeugen würde?
Wegen oben wäre das immer nur ein einschränkendes wenn ... dann...

Und sich auf NHibernate (oder andere) nur deswegen einlassen ???
Das erzeugt hier (leichtes) Kopfschütteln ;-)

Gruss
Elmar
Stefan König
2005-11-08 17:26:59 UTC
Permalink
Hallo Elmar
Post by Elmar Boye
Nochmal bekräftigt: Nicht alles, was man in XML mit oder ohne XSD
darstellen kann - also was man gemeinhin well formed XML nennt,
lässt sich (ohne Nachhilfe) in eine relationale Struktur überführen.
Ja, das weiß ich - weshalb ich mich auch dazu entschlossen habe, die
XMLdatei in den SQL Server zu speichern (typed) und die Performance
stimmt.auch.
Post by Elmar Boye
Wenn
http://wiki.nhibernate.org/display/NH/Using+NHibernate+with+Visual+Studio+.NET
nicht funktioniert nimm Visual Studio 2003.
Oder warte bis die das für 2005 RTM ausgetestet haben
(nicht alle sind Beta Freaks).
Danke. Den Link kannte ich schon, selbst damit funktioniert es nicht und
VS2005 ist zwingend notwendig - nicht deswegen -

Stimmt, nicht alle sind Beta Fans ich auch nicht - hatte schon genug
Probleme damit, aber was soll man machen. Bis vor kurzem gab es ja die
Vollversion nicht und das Projekt muss trotzdem vorankommen.
Post by Elmar Boye
Post by Stefan König
Währe schon froh, wenn mir jemand mit Bestimmtheit sagen könnte, das
nHibernate 1.0 fehlende Tabellen aus dem XSD Schema selbstständig
erzeugen würde?
Wegen oben wäre das immer nur ein einschränkendes wenn ... dann...
Hätte ja sein können das jemand eine konkrete Aussage treffen kann?! Das das
gewissen Einschränkungen unterliegt ist klar, aber vielleicht wäre die XSD
Struktur noch abbildbar gewesen?
Post by Elmar Boye
Und sich auf NHibernate (oder andere) nur deswegen einlassen ???
Das erzeugt hier (leichtes) Kopfschütteln ;-)
Tut mir leid, wenn da manche den Kopf schütteln, aber das wäre ein
Hauptgrund gewesen, der mir nahe liegt, allerdings kann man die anderen
Vorteile von nHibernate nicht unter den Teppich kehren.

Diese wären aber zum jetzigen Zeitpunkt nur eine nützliche Zugabe gewesen.

MfG




Stefan König
Elmar Boye
2005-11-08 19:17:30 UTC
Permalink
Hallo Stefan,
Post by Stefan König
Post by Elmar Boye
Post by Stefan König
Währe schon froh, wenn mir jemand mit Bestimmtheit sagen könnte, das
nHibernate 1.0 fehlende Tabellen aus dem XSD Schema selbstständig
erzeugen würde?
Wegen oben wäre das immer nur ein einschränkendes wenn ... dann...
Hätte ja sein können das jemand eine konkrete Aussage treffen kann?!
Das das gewissen Einschränkungen unterliegt ist klar, aber vielleicht
wäre die XSD Struktur noch abbildbar gewesen?
Wir kennen Deine Strukturen nicht, jede Aussage wäre also reine
Spekulation. Und davon hat keiner was (wenns nicht läuft).
Post by Stefan König
Post by Elmar Boye
Und sich auf NHibernate (oder andere) nur deswegen einlassen ???
Das erzeugt hier (leichtes) Kopfschütteln ;-)
Tut mir leid, wenn da manche den Kopf schütteln, aber das wäre ein
Hauptgrund gewesen, der mir nahe liegt, allerdings kann man die
anderen Vorteile von nHibernate nicht unter den Teppich kehren.
Ich wollte da nichts unter irgendwelche Teppiche kehren...
Post by Stefan König
Diese wären aber zum jetzigen Zeitpunkt nur eine nützliche Zugabe gewesen.
... nur ein Produkt anhand seiner evtl. Zugaben auswählen,
erzeugt nämliches Kopfschütteln ;-)
Es ist nunmal so, dass man nicht immer alles mundgerecht kriegt.
Und wenn die XSD Umsetzung so wichtig ist, sollte da ein Versuch
drin sein, ob das mit dem XML Klassen von .NET hinzukriegen ist.
Denn dort kannst Du auf Besonderheiten einprogrammieren, die
ein generelles Tool nicht berücksichtigen kann.

Gruss
Elmar
Stefan König
2005-11-08 21:01:54 UTC
Permalink
Hallo Elmar,

also mit den XML Klassen und .NET habe ich mich bereits auseinander gesetzt
bzw. benutze sie teilweise schon.

Außerdem hab ich auch nicht verlangt, dass mir hier jemand eine fertige
Lösung präsentiert, Denkanstösse reichen vollkommen aus. Auch deshalb, habe
ich das Schema nicht veröffentlicht!

Des weiteren ist es Richtig, das einem nicht alles Mundgerecht präsentiert
wird und immer ein programmiertechnischer Aufwand dahinter steckt (dagegen
hab ich auch gar nichts), jedoch müssen schon vorhandene Methoden untersucht
und bewertet werden (Man muss das Rad ja nicht neu erfinden?!).



Vielen Dank für die bisherigen Ratschläge!

Loading...