Befehlsübergabe an MySQL (load data infile)
-
Danke für die schnelle Antwort.
hab ich versucht.....leider auch kein Erfolg.
-
Hallo
ich hab mal mein SQL-Manual durchgeschaut und folgendes gefunden :
LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
oder Unix-Style
C:/tmp/skr.txt
Da muß du die überflüssigen Sonderzeichen raushauen.
bis bald
akari
-
Hallo
das beste ist du schaust dir das im Handbuch fuer mySQl mal genau an
(da gibt es einige Fallstricke)
ich habe vor einiger Zeit schonmal versuchtaber nie so richtig zum Laufen gebracht
Problem war aber bei mir das die Datei nicht auf dem Server lag sondern lokalMfF
Klaus
-
Werd mal nochmal den Befehl durchschauen bzw. die Sonderzeichen
aber der Befehl funktioniert eigentlich, d. h. wenn man in MySQL in die SQL Eingabeaufforderung geht und den Befehl so eingibt macht er alles ohne Probleme, nur über C macht er Probleme.
Danke an alle
-
Statt "Query->Open()" "Query->ExecSQL()" nehmen, da die LOAD-Anweisung keine Rückgabemenge besitzt.
Eine CSV-Datei in eine Tabelle laden:
Vorraussetzung ist eine bestehende Tabelle mit den entsprechenden vordefinierten Spalten!
Im Beispiel wird der File "C:/Dateien/import.csv" in die Tabelle "daten" der Datenbank "testdb" geladen. Alle Felder werden durch ";" getrennt und in die Spalten "id, name" usw. geladen
LOAD DATA INFILE 'C:/Dateien/import.csv' INTO TABLE testdb.daten FIELDS TERMINATED BY ';' (id, name, wert, datum)
-
Hab es jetzt folgendermassen abgeändert, funktioniert aber leider immer noch nicht
{
DataModule2->Query1->Close();
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("delete from dat");
DataModule2->Query1->SQL->Add("load data infile 'c:/mysql/Tabellen/tar.txt' into table dap.dat fields terminated by ';' lines terminated by ','");
DataModule2->Query1->ExecSQL();
}Hab ich was übersehn????????????
HilfeDank euch
-
Kannst du mal ansatzweise Deine tar.txt zeigen? Warum machst Du das mit lines terminated by ',' ?
-
Dies ist der tar.txt bzw. ein Auszug davon:
0258006566 ; 001 ; 312132 ; 2004-11-10 ; 14:34:10 ; 230 ; 0 ; 21 ,
0258006566 ; 001 ; 312132 ; 2004-11-10 ; 14:32:09 ; 230 ; 0 ; 21 ,Diese Datei wird von einem anderen System erzeugt, deswegen habe ich nur diese Möglichkeit.
-
Also in der Zeit, die dieser Thread schon läuft, hättest Du längst eine Importroutine schreiben können...
-
Hallo
ist diese Datei auf dem Rechner wo auch der mySQL-Server drauf ist oder
auf dem ClientMfG
Klaus
-
Du solltest das in 2 Queries machen:
[cpp]
{
// Tabelle kicken
DataModule2->Query1->Close();
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("delete from dat");
DataModule2->Query1->ExecSQL();// neue Daten einspielen
DataModule2->Query1->Close();
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("load data infile 'c:/mysql/Tabellen/tar.txt' into table dap.dat fields terminated by ';' lines terminated by ',' (spalte1, spalte2, ...)");
DataModule2->Query1->ExecSQL();
}
[/cpp]
-
Es hat geklappt
Vielen Dank an alle besonders an F98