![]() |
Datenbank: mysql • Version: 5 • Zugriff über: Delphiprogramm
csv Datei in mysql DB einlesen
Hallo zusammen!
Ich versuche mich das 1. Mal mit 'ner mySQL-DB und hab bisher Folgendes erreicht: ich erzeuge aus meinem Delphi-Programm eine csv-Datei, die ich dann per FTP (aus den Indys) auf die Homepage hochlade. Jetzt habe ich gelesen, dass ich per "LOAD DATA INFILE" die Datei importieren kann. Aber wie funktioniert das aus dem Programm heraus oder muss ich den Befehl in 'ne php-Seite "stecken" oder oder oder ...!? Das Ganze soll jedenfalls komplett aus dem Programm erledigt werden! Vielen Dank für Eure Hilfe! |
AW: csv Datei in mysql DB einlesen
Hallo,
am besten mit einem ADOCommand- oder wenn Du du MyDAC besitzt mit einem TMyCommand-Objekt:
Delphi-Quellcode:
const
qryImportCSV= 'LOAD DATA LOCAL INFILE ''%s'' '+ 'INTO TABLE %s '+ 'FIELDS TERMINATED BY '';'' '+ 'IGNORE 1 LINES'; // falls 1. Zeile Spaltenüberschriften enthält ... var DateiName:String; ... DateiName:=StringReplace('X:\EinVerzeichnis\Meinedatei.csv', '\', '/', [rfReplaceAll]); // MyDAC MyCommand.SQL.Text:=Format(qryImportCSV, [DateiName, 'MeineTabelle']); MyCommand.Execute(); // oder mit ADO MyCommand.CommandText:=Format(qryImportCSV, [DateiName, 'MeineTabelle']); MyCommand.Execute(); ... |
AW: csv Datei in mysql DB einlesen
Wenn du direkt aud den MySQL Server zugreifen kannst, dann ist es nicht nötig die csv Datei per FTP oder wie auch immer zum Server zu schieben. ;)
|
AW: csv Datei in mysql DB einlesen
@Sir Rufo: die DB liegt auf meiner Homepage.
@Gollum: Hab das mal so probiert und mir den mySQL ODBC Treiber aus'm Netz besorgt.
Delphi-Quellcode:
Anscheinend lässt der mich der Server aber nicht rein, da ich die Fehlermeldung "[MySQL][ODBC 3.51 Driver] Can't connect to MySQL server on 'rdbms.strato.de' (10061)" bekomme.
const
qryImportCSV= 'LOAD DATA LOCAL INFILE ''%s'' '+ 'INTO TABLE %s '+ 'FIELDS TERMINATED BY '';'' '+ 'IGNORE 1 LINES'; // falls 1. Zeile Spaltenüberschriften enthält StrConnection='Driver={MySQL ODBC 3.51 Driver};Server=%s;Database=%s;'+ 'User=%s; Password=%s;Option=3;'; var Command: TADOCommand; begin DateiName := '/DB-Export.csv'; Command := TADOCommand.Create(nil); with Command do try with Online^ do ConnectionString := Format(StrConnection,[Servername,Datenbank,Username,Passwort]); CommandText := Format(qryImportCSV, [DateiName, 'Person']); Execute; finally Free; end; Was muss ich da denn noch zusätzlich festlegen!? |
AW: csv Datei in mysql DB einlesen
Also ich würde erstmal eine reine Verbindung ohne SchnickSchnack zum Server herstellen.
Manchmal hilft es auch den Provider zu fragen, wie man denn auf den Server zugreifen kann. Irgendwie hatte ich aber das Gefühl, dass du die Verbindung zum Server schon hergestellt hattest??? Egal, der Provider kann den Server auf mehrere Arten von der Aussenwelt abschotten - bis zu dem Punkt, dass keiner von aussen ran kommt. Dann geht alles nur per PHP o.ä. |
AW: csv Datei in mysql DB einlesen
PHP ist 'nen gutes Stichwort!
Wie sähe das denn dann damit aus und könnte ich das trotzdem aus meinem Delphi-Programm steuern!? Hab erst 'nen bißchen in PHP reingeschnupptert ... |
AW: csv Datei in mysql DB einlesen
Gewisse (unkritische) Bereiche unserer Firmen-Website administriere ich auch mit PHP-Scripten, die von einem Delphi-Programm angesprochen werden. Man muss sich dann aber darüber im Klaren sein, dass man diesen Kommunikationsweg irgendwie absichern muss, da ja sonst theoretisch jeder, der den Namen und die erwarteten Parameter der Scripte kennt, mal eben in der DB löschen/eintragen/ändern kann.
|
AW: csv Datei in mysql DB einlesen
das ist ja meine Frage:
WIE spreche ich denn php Skripte von Delphi aus an?! Das Skript selber besteht dann wohl aus DB-Aufrufen wie DELETE FROM Person; und anschließendem Einlesen der csv-Datei ind INSERT der einzelnen Zeilen, oder?! Liest man die Datei dann in einem Rutsch ein und geht dann die Zeilen durch oder lieber direkt zeilenweise einlesen? Wird das Ganze dann nicht ziemlich langsam, je nachdem wie viele Zeilen/INSERTs es gibt!? |
AW: csv Datei in mysql DB einlesen
Ein PHP-Skript liegt auf einem Webserver, also muss ich wohl mit dem Webserver sprechen.
Somit ist es eigentlich egal, was bei dem Webserver im Hintergrund werkelt (kann eben PHP sein), es geht dabei nur um die Funktion. Bau dir ein PHP Skript dass eine CSV Datei entgegennimmt und in die Datenbank pustet. (eigentlich das falsche Forum) In Delphi brauchst du dann etwas um diese Funktion des Webservers anzusprechen (dafür gibt es z.B. die INDYs). Wie der konkrete Zugriff auf die Funktion aussehen muss hängt von der Aufrufkonvention der Funktion ab. Also erstmal die Funktion schaffen und dann den Zugriff darauf. Das ist wie mit dem Radio, das wurde erst erfunden nachdem man die Sprache entdeckt hatte, vorher hatte man sich einfach nichts zu sagen :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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