![]() |
Datenbank: MySQL • Version: 4 • Zugriff über: ZEOS
SQL Statement um aus Textdatei lesen
Hallo,
ich möchte eine Datenbank mittels SQL-Statements aktualisieren(Update table...) dabei soll der Inhalt eines Textfeldes(Memo) aus einer Textdatei gelesen werden. Gibts dafür einen direkten SQL-Befehl oder muss ich mir den Inhalt der Textdatei zuerst auf eine temporäre Variable legen? Gruß Gambit |
Re: SQL Statement um aus Textdatei lesen
einen direkten SQL-befehl gibt es nicht.
musst dir die datei einlesen und dann in die DB schreiben. gruesssle |
Re: SQL Statement um aus Textdatei lesen
Inhalt der Textdatei in Memo laden...
Delphi-Quellcode:
Inhalt des Memos in TZSQLProcessor laden...
Memo.Lines.LoadFromFile('...');
Delphi-Quellcode:
Ausführen
ZSQLProcessor.Script.Assign(Memo.Lines);
Delphi-Quellcode:
P.S.: Bei einigen Datenbanken müssen die Eigenschaften Delimiter und DelimiterType noch richtig gesetzt werden!
ZSQLProcessor.Execute;
|
Re: SQL Statement um aus Textdatei lesen
wobei eine TStringList auch reichen würde, wieso willst du es erst in eine memo laden?
wieso mit nem panzer auf die arme mücke los? entsprechend dann
Delphi-Quellcode:
var Temp:TtringList;
begin Temp:=TStringList.Create; Temp.LoadFromFile('...'); ZSQLProcessor.Script.Assign(Temp); ZSQLProcessor.Execute; Temp.Free; end; Edit: Ich hab keinen Plan was ihr da macht, hab nur die Memo in ne StringList geändert... |
Re: SQL Statement um aus Textdatei lesen
Wozu so umständlich ?
Delphi-Quellcode:
ZSQLProcessor1.LoadFromFile('c:\test.sql');
|
Re: SQL Statement um aus Textdatei lesen
Vielleicht will er das geladene Script noch vorher ansehen und/oder modifizieren??? :roll:
|
Re: SQL Statement um aus Textdatei lesen
Hallo nochmal und Danke für die Antworten.
Ich muss zu meiner Schande gestehen, dass ich noch nie mit diesem ZSQLProcessor gearbeitet habe. Wie benutzt man den genau bzw. was macht man damit? Mit dem Code:
Delphi-Quellcode:
kann ich jetzt ab der Zeile
var Temp:TtringList;
begin Temp:=TStringList.Create; Temp.LoadFromFile('...'); ZSQLProcessor.Script.Assign(Temp); ZSQLProcessor.Execute; Temp.Free; end;
Delphi-Quellcode:
nicht so schrecklich viel anfangen. Was passiert denn da genau?
ZSQLProcessor.Script.Assign(Temp);
Gruß Gambit |
Re: SQL Statement um aus Textdatei lesen
Hallo Gambit,
mit Assign weißt du den Inhalt von Temp auf Script von ZSQLProcessor (beides sind ja Objekte vom Typ TStrings). Ein ZSQLProcessor.Script := Temp würde ja bloß bewirken, dass Script auf das Objekt Temp zeigen würde. Tja, und mit Execute wird das Script (es können eben auch mehrere SQL-Statements hintereinander ausgeführt werden) an die Datenbank geschickt. Wenn du jetzt allerdings nur eine Datei auswählen willst und diese ausführen willst, dann solltest du den "Umweg" über Temp tatsächlich weg lassen und gleich mit ZSQLProcessor.LoadFromFile('...') arbeiten. MfG Stevie |
Re: SQL Statement um aus Textdatei lesen
Gut, das hab' ich soweit verstanden. Nur mit dem Execute ist mir noch nicht ganz klar. Wenn damit das Sript oder in diesem Fall ein Text aus einer Textdatei an die DB geschickt wird, wie wird der Text denn dann einem bestimmten Memo aus der Tabelle zugewiesen?
Oder geht das dann nach dem Execute beispielsweise mit
Delphi-Quellcode:
Gruß
ZQuery.FieldByName('MemoText').asString:= ZSQLProcessor.Script.text;
Gambit |
Re: SQL Statement um aus Textdatei lesen
:wall: :wall: :wall:
Ich glaub, ich hab da was missverstanden! :oops: Ich dachte, du wolltest ein Script aus ner Datei laden, und das ausführen... :pale: Du willst also "nur" den Text aus einer Text-Datei in ein Datenbankfeld schreiben? Das machst du dann über den TStrings-"Umweg" (in TStrings-Objekt laden und dann TStrings.Text dem TField.AsString zuweisen) |
Re: SQL Statement um aus Textdatei lesen
genau!
Ums mal genau zu beschreiben, ich habe 2 Datenbanken. Aus der ersten baue ich mir die zweite auf. In der ersten habe ich aber bestimmte Texte nicht in einem Memo sondern nur einen Pfad mit Verweis auf eine Textdatei in einem VarChar-Feld. In der zweiten möchte ich diesen Text aber in einem Memo haben. Ich könnte dafür zB. ein TStringList oder von mir aus auch ein TMemo nehmen. Aber TZSQLProcessor geht dann ja auch, habs gerade ausprobiert. ZSQLProcessor.Execute brauche ich dann gar nicht... Oder ist ZSQLProcessor dafür overkilled? |
Re: SQL Statement um aus Textdatei lesen
Vergiss das mit dem ZSQLProcessor mal für dieses Thema ganz schnell wieder! :wink:
Das Teil ist dafür da, SQL-Statements auf der Datenbank auszuführen! Die Lösung für dein Problem sieht ungefähr folgendermaßen aus:
Delphi-Quellcode:
while not QuellQuery.Eof do
begin TempStrings.LoadFromFile(QuellQuery.FieldByName('DateiPfad').AsString); ZielQuery.Append; ZielQuery.FieldByName('DateiInhalt').AsString := TempStrings.Text; {evtl. andere Felder noch kopieren} ZielQuery.Post; QuellQuery.Next; end; |
Re: SQL Statement um aus Textdatei lesen
also doch ganz einfach mit einer StringListe...so ähnlich habe ichs dann auch.
Dann benutze ich allerdings die SQL-Befehle update bzw insert.....die erste DB hat meist mehr Datensätze als die zweite wobei ich dann 2 Schleifen durchlaufe, in der ersten benutze ich bis zum Ende der zweiten Tabelle den Update-Befehl und in der zweiten den Insert-Befehl bis zum Ende der ersten Tabelle. Aber das hört hier ja schon fast nicht mehr hin... OK, Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz