dedlfix: Große Menge von Datensätzen aus DB in Datei schreiben

Beitrag lesen

Hi!

Zusammenfassend denke ich, dass ungepuffertes Fetchen und sofortige Ausgabe ohne die Konvertierung nicht zu unterbieten ist.

Wenn man das DBMS alles machen lässt, könnte es nochmal schneller gehen - PHP müsste dann lediglich per readfile() das vom DBMS erzeugte CSV-File lesen und ein paar Header davorknallen.

Dazu braucht es einige Voraussetzungen, die bei einem Webhoster in der Regel nicht erfüllt sind. Wenn man alle Komponenten unter eigener Kontrolle hat, geht das natürlich, aber warum sollte man dann noch eine PHP-Lösung suchen? SELECT ... INTO OUTFILE nicht zu kennen wäre ein Grund, ein schwacher.

  • Man benötigt das MySQL-Privileg, um Dateien auf dem MySQL-Server anlegen zu können.
  • Es gibt keine Verbindung zwischen den DBMS-Usernamen und den vom Betriebssystem verwalteten und damit laufen sämtliche Dateizugriffe mit der Kennung des MySQL-Servers. Existierende Dateien lassen sich zwar mit SELECT ... INTO OUTFILE nicht überschreiben, aber mit LOAD DATA INFILE lässt sich alles erreichbare lesen. Wer sowas für Massenhostingzwecke zulässt, ...
  • MySQL-Server und Webapplikationen sind meist getrennte Maschinen. Für den Dateizugriff muss auf der MySQL-Server die gleiche Benutzerverwaltung wie auf dem Webserver vorgehalten werden[*]. Technisch nicht das Problem, doch oftmals bedient ein MySQL-Server mehrere Webserver. Der Dateizugriff setzt eine Server-Software auf dem MySQL-Server voraus, also NFS oder CIFS oder FTP oder HTTP. Sowas will man aber nicht wirklich auch noch auf der Maschine laufen haben.

[*] Eigentlich reicht Leserecht für alle und alles, denn der MySQL-Server unterscheidet beim Dateianlegen ja auch nicht.

Lo!