Select * into outfile > csv

Steusi

Nasenbär
Hallo Leute, ich möchte gern meine Datenbank in Excel konvertieren, da ich mich aber mit dem Format mit Excel nicht gesondert auseinander setzen möchte, reichen auch .CSV Dateien, nur dürfen die nicht mehr als 65.000 Einträge besitzen :D
Also habe ich mich für OUTFILE entschieden, jedoch bekomme ich keine CSV Dateien erstellt und eine Fehlermeldung bekomme ich leider auch nicht, vielleicht sieht ja jemand von Euch einen Fehler beim rüber schauen, wäre sehr nett. Danke
PHP:
      $DatensatzAnzahl = CountDataLinesFromTable($Tabelle); 
      $ExportAnz = ceil($DatensatzAnzahl / $endLine)+1;
     
      for($i=0;$i<$ExportAnz;$i++){

      $k = $i+1;
          $ExportQuery =sprintf("SELECT * INTO OUTFILE '/var/www/ORDNERNAME/CSV/export{$k}.csv'
             FIELDS
               TERMINATED BY ';'
               OPTIONALLY ENCLOSED BY '%c'
               LINES TERMINATED BY '\n'
             FROM {$Tabelle} LIMIT {$startLine}, {$endLine}", 34);

         var_dump($ExportQuery);
         $MakeExport = mysql_query($ExportQuery);
         $startLine=$endLine;
         $endLine=$endLine+65000;
      }
 
Zuletzt bearbeitet:
Hi,
ist die ausgegebene Query denn korrekt? Und was gibt
PHP:
mysql_error()
nach Ausführung der Query?

Randbemerkung: Du solltest noch ein ORDER BY ergänzen, um sicherzugehen, dass du auch die ganze Tabelle bekommst. Ohne Sortierung machen nämlich Angaben wie "14. bis 27. Zeile" keinen Sinn, und die Datenbank könnt dir, wenn sie mag, jedes Mal die selben Einträge geben.
 
Danke für den ORDER BY Hinweis. Habe ich sofort umgesetzt.
Und ich hab meinen Fehler auch eruieren könne:

Access denied

Der DB-Benutzer darf alles ausführen in seiner DB.
Und der User auf dem Linux-System darf auf auch das Verzeichnis zugreifen.
Kann ich irgendetwas gesondert prüfen?

//edit: normale DB Abfragen in der Datei funktionieren ohne Probleme mit gleichen Rechten!
 
Zuletzt bearbeitet:
Unter welchem User läuft denn der Webserver? Und hat der Schreibrechte in dem Verzeichnis, in dem du die CSV-Dateien ablegen willst?
 
Schreibrechte von dem User waren alle korrekt, ich habe keine Ahnung warum das Script nicht funktioniert.
Ich kann es mir nicht erklären :-(
Habe jetzt den alten Weg genommen, öffne Datei schreibe Zeile mit ";" - Trennung schließe Datei.

Und das immer wieder, ich weiß es ist nicht gerade schön aber dies funktioniert.
 
Zurück