Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi schnellster Weg eine SQL-Datei zu bearbeiten (https://www.delphipraxis.net/18061-schnellster-weg-eine-sql-datei-zu-bearbeiten.html)

lkz633 13. Mär 2004 18:30


schnellster Weg eine SQL-Datei zu bearbeiten
 
Hallo,

ich habe eine riesige SQL Datei (ca. 300 MB) mit insert into Statements.
Diese muss ich in eine HTML Datei umwandeln.

Gibt es die Möglichkeit, eine fiktive Tabelle im Speicher zu erzeugen, darin lese ich die Datei ein und kann dann ganz normal mit tabelle.fieldbyname etc darauf zugreifen? Geht sowas, wenn ja, scheitert es an der Grösse der Datei/insert intos?

Ich wollte mir halt die Mühe ersparen, die Datei zu parsen.

Was wird vermutlich schneller gehen, parsen oder in eine Tabelle einfügen?
Irgendwelche sonstigen Tipps?

Danke und Gruss
lkz633

Hansa 13. Mär 2004 18:39

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Meinst Du vielleicht ein SQL Script ?? Oder die Metadaten-Definitionen, oder die Datenbank an sich ?? Oder wie oder was ?? Ist mir zu hoch. 8) Welche Datenbank ist das überhaupt ?

Robert_G 13. Mär 2004 20:39

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
300MB :shock:
Was für eine DB benutzt du denn? Normalerweise geibt es für die "richtigen" Datenbanken Import/Export Möglichkeiten, die ohne die SQL Engine auskommen.
Zum Bleistift Oracle's Direct Path loading.

lkz633 14. Mär 2004 18:53

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Hallo,

es handelt sich um einen SQL Dump, aus dem ich HTML Seiten erzeugen möchte.

Gruss lkz633

Hansa 14. Mär 2004 19:57

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
ohne Angabe der Datenbank läßt sich wohl nichts machen. Ist das nicht möglich und die Daten sind aus dem Nichts gekommen, so bleibt Dir wohl nichts anderes übrig, als zeilenweise alles nötige auszulesen / auszufiltern. 300 MB ist nicht die Welt. In der DB sinds dann so um die 50 MB, eher weniger. Hab ich auch schon durchgezogen. Wichtiger, als die MB sind aber IMHO die Anzahl der Zeilen.

Aber, was hat das mit html zu tun. Was soll da rauskommen ? Sind die Zeilen einheitlich, oder Kraut und Rüben ? CSV oder fest ? :gruebel:

lkz633 14. Mär 2004 22:51

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Es handelt sich um einen SQL dump von Wikimedia

Es gibt ein Perl Script, was daraus HTMl Seiten, also eine Art Enyolzpedia erstellen kann, das soll halt nun auch mit Delphi passieren.

Deswegen die Frage, ob eine In Memory Tabelle schneller ist oder die Datei parsen schneller ist

lkz633

Robert_G 14. Mär 2004 22:55

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Könntest du 2-3 Zeilen als Anhang hochladen?
Dann könnte ich mir (bzw. alle anderen) besser ausmalen wovon du da sprichst. :wink:

Chewie 14. Mär 2004 22:57

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Er meint wohl einen Dump der kompletten Datenbank als CREATE DATABASE, CREATE TABLE und INSERT-Statements.

Robert_G 15. Mär 2004 00:05

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Als dump (*.dmp-datei) kenne ich z.Bsp. die Import/Export-dateien von Oracle, die ohne SQL engine auskommen, wobei eine 300MB Datei in unter 10 sek. drin ist.
Er meint mit Dump aber wahrscheinlich eine ewig lange Liste von SQL-Statements.
Wegen dem "wahscheinlich" fragte ich nach den ersten paar Zeilen.

lkz633 15. Mär 2004 00:10

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Ja, es ist genauso wie vermutet.

Ein create statement fuer die Tabelle, danach nur noch insert into statements.
habe jetzt erfahren, das das mitt einem Clientdataset gehen soll.

Hat jemand mit SQL schonmal damit eine Tabelle erstellt? Ich habe es nicht hinbekommen.

lkz633

Hansa 15. Mär 2004 02:30

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Zitat:

Zitat von lkz633
Ja, es ist genauso wie vermutet.

Ein create statement fuer die Tabelle, danach nur noch insert into statements.

Der Nebel lichtet sich, aber ohne Code-Fragment nur langsam.

Zitat:

Zitat von lkz633
habe jetzt erfahren, das das mitt einem Clientdataset gehen soll. Hat jemand mit SQL schonmal damit eine Tabelle erstellt? Ich habe es nicht hinbekommen.

Was soll das nützen, in dem Zusammenhang ? CDS habe ich noch nicht gebraucht und muß zur Zeit fast jeden Tag Tabellen umbauen. 8)

lkz633 15. Mär 2004 10:50

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Mit clientdataset kann ich eine In Memory Tabelle erzeugen.

Ich mache es jetzt aber mit einer anderen Komponente. Das problem ist nur, wie bekomme ich die Textdatei mit den SQl Befehlen geladen? In jeder Zeile steht ein isert into, aber ein Versuch mit stringlist.loadfromfile ging schief, und der PC haengte sich auf. Ich wollte dann einfach mit stringlist.strings[i] die Befehle durchgehen.

Gruss lkz633

Hansa 15. Mär 2004 11:13

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Also echt, Du willst 300 MB in den Speicher laden und dann ? Das Vorhaben wird immer schwerer zu verstehen. Dein Ansatz sieht für mich so aus, als willst du alle bewährten Strategien über den Haufen schmeißen und Datenbanken, Dateien usw. überflüssig machen und die Absatzzahlen von Hauptspeicher ankurbeln. :wall: Dein Dump dient normalerweise dazu, beim Wechsel der Datenbank dieses Script umzubauen und ablaufen zu lassen, um die Daten neu (aber anders) zu speichern. Ist die Datei zu groß, so wird sie zeilenweise gelesen.

Desweiteren wäre das allés schon lange fertig, wenn du nur mal mit der Arbeit angefangen hättest und nicht unwichtigen Phantomen nachjagen würdest. :mrgreen:

HolyCow 15. Mär 2004 19:20

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Ich glaube ich hab's verstanden - er will den SQL-Dump in eine In-Memory-Tabelle schreiben, ohne dabei eine echte Tabelle anzulegen.

Leider funktioniert das aber ohne DB-Server nicht, denn das ClientDataSet selbst versteht kein SQL. Es bleibt noch die Möglichkeit, den Dump zeilenweise durchzulesen und entsprechende Queries an eine echte Datenbank abzusenden, aber da kann man genauso gut irgendwelche Admin-Tools nutzen.

SQL-Statements zu parsen ist mehr als aufwendig, würde ich nicht tun.

Besser wäre, wenn der Erzeuger des SQL-Dumps auch Dateien im CVS-Format o.ä. erstellen könnte, die sind relativ einfach in ein CDS zu pumpen.

lkz633 15. Mär 2004 21:34

Re: schnellster Weg eine SQL-Datei zu bearbeiten
 
Zitat:

Zitat von HolyCow
Ich glaube ich hab's verstanden - er will den SQL-Dump in eine In-Memory-Tabelle schreiben, ohne dabei eine echte Tabelle anzulegen..

Genau :-)

Zitat:

Zitat von HolyCow
Leider funktioniert das aber ohne DB-Server nicht, denn das ClientDataSet selbst versteht kein SQL..

Es geht, siehe Clientdataset(Propertz Commandtext ist fuer SQl) und diverse andere In Memory Tabelllen, z.B DBISAM, SQLMemTable etc[/quote]


Hab wohl alles noetige aus der Borland-Newsgroup nun zusammen, trotzdem danke fuers Bemuehen

lkz633


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz