Hallo, in MySQL kann man auch SQL-Tabellen mit vorbereiteten .TXT- oder .CSV-Dateien laden. Siehe: (Link nur für registrierte Nutzer sichtbar.) und (Link nur für registrierte Nutzer sichtbar.) Ich habe zwar einige SQL-Kenntnisse, aber eine vorbereitete .TXT- oder .CSV-Datei habe ich noch nie eingelesen und eine SQL-Tabelle damit gefüllt... Wo ich dabei gerade hänge ist dabei der genauen Definition der 1. Zeile des LOAD DATA Statements. Denn es gibt da wohl die Varianten LOAD DATA INFILE und LOAD DATA LOCAL INFILE Aktuell habe ich meine erstellte .CSV-Datei zum Laden, names 'Bentley.csv', in ein extra neu erstelltes Verzeichnis names 'apload' (ja, mit 'a' am Anfang ) in meine Gambio-Shopinstallation, namens 'c24_gambio_shopware', hochgeladen Mein aktuelles MySQL-Statement sieht wie folgt aus: LOAD DATA INFILE './c24_gambio_shopware/apload/Bentley.csv' INTO TABLE `products_xsell` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES Wobei es aber zu einer Fehlermeldung kommt, wegen eines fehlenden Server-Passworts kommt... Frage: Hat jemand evtl. ein funktionierendes LOAD DATA MySQL-Statement, welches ich dann nur noch auf meine Dateinamen anpassen muss...? Wäre toll!
Hi @Stromlinie21 , Sehr viele (oder fast alle?) Hoster lassen LOAD DATA INFILE nicht mehr zu. Aus Sicherheitsrelevanten Gründen. Geht das überhaupt in Deinem Hostingpaket? Ed
Dass es da evtl. sicherheitsrelevante Gründe gibt war mir (bis gerade) noch nicht bewusst... Daher habe ich auch das Thema hier mal gepostet, weil es evtl. mehr 'Abhängigkeiten' hat, als man zunächst denkt.... Nach 'was' genau bzw. welchen Berechtigungen müsste ich in meinem Hostingpaket schauen, um festzustellen, ob ich so etwas darf?
@Stromlinie21 , Damit war es möglich, extrem grosse csv Dateien superschnell (und ohne timeout) zu importieren. Und genau darin liegt die "Gefahr" Schreib mal deinen Hoster an. Für spezielle Importe mit "grossen" csv Dateien muss man eine andere Technik verwenden, damit das ohne timeout durchläuft. Das ist aber schon etwas komplexer. Ed
Danke, habe meinen Hoster Webgo gerade entsprechend angemailt! Konkret sind es einige hundert Datensätze, die ich (in die Tabelle products_xsell fürs Cross-Merketing) laden will, es sollte also zumindest kein Timeout-Problem geben...
Bei LOAD DATA INFILE gib es so eine Art Catch-22. Man braucht auf dem MySQL-Server das FILE-Recht, um das benutzen zu können. Mit diesem Recht kann man aber auch per Datenbankserver Dateien überall (!!) auf dem Server anlegen, das heißt, es gibt da wirklich erhebliche Sicherheitsimplikationen. Deshalb haben in aller Regel nur Datenbankadministratoren dieses Recht. Also, wer überhaupt erst danach fragen muss, wird dieses Recht mit absoluter Sicherheit nicht bekommen können, alles andere wäre vom Hoster grob fahrlässig. Ein paar hundert Zeilen aus einer CSV-Datei in eine Datenbanktabelle zu schreiben, ist in PHP aber auch eine Sache von ’nem Dutzen Zeilen Code und eher wenigen Sekunden Ausführungszeit. Auch deshalb wird dafür vermutlich kein Hoster Extrawürste braten.
Danke für die Infos! Das klang halt relativ leicht in der o.g. Dokumentation mit dem Befehl LOAD DATA INFILE... Gut, dass ich damit nicht länger meine Zeit verbracht habe, sondern hier gefragt habe.... Mittlerweile habe ich eine CSV-Datei erstellt, in der die benötigten/vorgefertigten INSERT SQL-Statements für die Tabelle products_xsell stehen und bei denen ich dann nur noch die gewünschten products_id Werte ergänzen muss. Dann kopiere ich alle Zeilen bzw. INSERT-Statements aus der CSV-Datei (mit copy und paste) und führe diese unter PHPMYADMIN aus....fertig!