Seite 1 von 1

Auf eine XML-Schema basierte Datenbank ein XML-File einlesen

Verfasst: 9. Mai 2007 10:00
von Krug-Systems.de
So, guten morgen
nachdem mein letzter eintrag scheint nicht funktioniert hat, alles nochmal:-)
:arrow:
ich habe ein Projekt übernommen in dem ich ein XML-File in eine auf einem XML-Schema basierte Datenbank einlesen und speichern soll.
[1]XML - Files hab ich alle
[2]Oracle10 DB
[3] Connect DB funktioniert

so jetzt ihr:
Wie bekomme ich meine Files da rein, in der anlehung bzw Pflicht das jedes SQL Statment nicht länger wie 4000 Zeichen lang sein darf.

wenn es euch hilft stell ich euch so n XML-File gerne zu verfügung und auch das Schema der DB


MFG ANDY

Verfasst: 9. Mai 2007 12:27
von upsala
Nur weil du es rot schreibst wird deine Frage auch nicht bevorzugt behandelt...

Woher kommt das Limit mit 4000 Zeichen bei einer Query? Von Oracle? Dann haben die sicher auch eine allgemeine Lösung für dieses Problem.

Verfasst: 9. Mai 2007 14:05
von Krug-Systems.de
ja das ist von seiten oracle. es gibt keine lösung ihrer seits.
mein xml file besteht aus einzelnen Knoten und ich muss jeden einzeln in die db schreiben. aber wie ????
weil wenn ich alles einzeln mach überschreit ich mein statment mit 4000 Zeichen auch nicht.

hab aber keinen ansatz wie ich anfangfen soll.

MFG ANDY

Verfasst: 9. Mai 2007 18:52
von upsala
Wäre dieses Problem dann in einer Oracle-Gruppe nicht besser aufgehoben, denn bis jetzt seh ich kein Qt-Problem.

Verfasst: 10. Mai 2007 07:30
von macman
In einer Oracle-Gruppe schicken sie ihn auch gleich wieder weg, die werden ihm auch nicht sagen, wie er sein XML-Dokument zerpflücken kann :-)
Das Problem sind nicht die SQL-Querys, sondern das abarbeiten des Dokuments, wenn ich das richtig sehe. Aus dem Kopf weiß ich es auch nicht, würde mir dazu die XML-Examples und die Sourcen von lupdate und lrelease anschauen.

Verfasst: 11. Mai 2007 09:32
von Krug-Systems.de
so, morgen jungs,
macman hat mein problem glaub verstanden.
ich muss die knoten meines XML Files einzeln in die db einfügen
den header mit insert
dann alles weitere mit update
.....
aber wie bekomm ich den zugriff auf meine einzelenen knoten?

.....

Verfasst: 11. Mai 2007 10:01
von C_R
http://qtforum.de/forum/viewtopic.php?t=4105

schau dir in der cpp die xmlmodel::data methode an, vielleicht hilft dir die.

Verfasst: 11. Mai 2007 16:09
von Krug-Systems.de
oh mann i glaub s thema geht an euch vorbei :-)

so aber mal was andres warum funktioniert des nicht?
in der DB bekomm i "eine" ausgabe und mit diesem wert will ich arbeiten.

Code: Alles auswählen

QSqlQuery query("select max(nstlid) from tabstl",db);
int maxid = query.value(0).toInt() + 1;

Verfasst: 11. Mai 2007 20:08
von upsala
Ich kann mir nicht vorstellen, daß Oracle da keine Lösung hat. Denn was willst du machen wenn ein Knoten größer als 4000 Zeichen ist?

Verfasst: 13. Mai 2007 22:24
von patrik08
upsala hat geschrieben:Ich kann mir nicht vorstellen, daß Oracle da keine Lösung hat. Denn was willst du machen wenn ein Knoten größer als 4000 Zeichen ist?
Oracle sollte die beste DB sein? Mysql bring bis 2GB rein in einen einziges feld... longblob ... 700KB xml einmal komprimiert werden bis 10 mal kleiner... mit zip oder gunzip.
http://www.qtforum.de/forum/viewtopic.php?t=3375


auch nur Base64 wie die mail geht das xml bis 3 mal kleiner...

und wenn man die knoten aus der db holt muss man nicht mal das file schreiben sonder man kann direkt im dom laden...

Code: Alles auswählen


/* encode to name */
QString encodeBase64( QString xml )
{
    QByteArray text;
    text.append(xml);
    return text.toBase64();
}

/* decode to name */
QString decodeBase64( QString xml )
{
    QByteArray xcode("");;
    xcode.append(xml);
    QByteArray precode(QByteArray::fromBase64(xcode));
    QString notetxt = precode.data();
    return notetxt;
}


Verfasst: 14. Mai 2007 09:13
von upsala
@patrik08: Es geht darum wie groß ein Datenpaket max. sein darf, daß an den Server gesendet wird (bei MySQL default 8MByte).

Ich kann mir trotzdem nicht vorstellen, daß Oracle da keine Lösung hat, da es ja auch XML-Knoten gibt mit mehr als 4KByte Größe...

Verfasst: 14. Mai 2007 10:14
von patrik08
So viel ich von oracle begreifen kann ist es fast wie mysql

SHOW GLOBAL VARIABLES

http://forums.oracle.com/forums/thread. ... 1&#1716221

und mit query je nach admin berechtigung kann man dort runter oder raufschrauben....

http://forums.oracle.com/forums/search!default.jspa

block size suchen...

IMO : hat doch nichts mit QT zu tun....

nur noch ne kleinigkeit

Verfasst: 15. Mai 2007 13:48
von Krug-Systems.de
so hab geschafft das ich meine einzele knoten einlese, nur noch eins.
wenn ich ne baugruppe hab mit n positionen und ich meine routine n mal für jede position laufen lass bekomm ich in jedem knoten den inhalt vom ersen wie spring ich ein Element weiter?

Verfasst: 16. Mai 2007 08:30
von Krug-Systems.de
So jungs hat sich alles erledigt danke bis zum nächsten mal, wied eh nicht lange dauern :-)