CSV Datei erstellen

Hallo,

ich möchte eine CSV Datei aus meiner Mysql Datenbank erstellen lassen.
Leider habe ich im Netz nichts darüber gefunden. Nur wie man eine TXT Datei erstellt. Das klappt auch. Nur leider schlecht als recht.
Die Datenbank enthält Textfelder mit Zeilenumbrüchen. Diese sollte natürlich nach dem Auslesen der CSV auch wieder richtig dargestellt werden.
Es sollte schon über PHP laufen. Der „select into outfile“ Befehl läuft bei mir nicht.

Kann mir da jemand helfen?

Hallo,

Kann mir da jemand helfen?

Warum machst du das nicht einfach mit PHPMyAdmin? Hast du die
Zeilenumbrüche in /n umgewandelt?

gruss Jan

Hallo,

Warum machst du das nicht einfach mit PHPMyAdmin? Hast du die
Zeilenumbrüche in /n umgewandelt?

Quark ich meine natürlich in
mit nl2br. Die Daten werden doch
normalerweise auf einer Webseite ausgegeben oder?

Gruss Jan

Die Datei muss täglich erstellt werden. Da ist es sehr umständlich alles per MyAdmin erstellen zu lassen. Und was mache ich, wenn ich mal im Urlaub,… bin?
Würde die Herstellungsdatei bei cronjob erstellen lassen. So habe ich mir das jedenfalls vorgestellt.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die Datei muss täglich erstellt werden. Da ist es sehr
umständlich alles per MyAdmin erstellen zu lassen. Und was
mache ich, wenn ich mal im Urlaub,… bin?
Würde die Herstellungsdatei bei cronjob erstellen lassen. So
habe ich mir das jedenfalls vorgestellt.

Schreib doch einfach ein Skript das genau diese Funktion von
PHPMyAdmin nutzt. Schau dir das Formular an, was wird wie aufgerufen,
welche Variablen werden gebraucht, das sollte doch gehen. Als
Dateiname nimmst du die aktuelle Zeit.

Jan

genau das habe ich mir vor 5 Minuten auch überlegt, als ich deinen Beitrag gelesen habe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ganz dumme Frage: mysqldump hast du da nicht zufällig, dann kannst du dir das Programmieren sparen, sofern mysqld auf der selben Maschine läuft. Mit -T bekommst du da auch CSV raus.
Ansonten schau in die build_dump.lib.php im Libraries Verzeichnis von phpMyAdmin, wie phpMyAdmin die CSV-Datei baut. So kompliziert ist das ja nun auch nicht, in jedem Feld " durch „“ zu ersetzen und das ganze dann mit implode zusammenzusetzen zu einer Zeile:
(ungetestet)

$F = fopen(date("y-m-d").".csv","w");
$r = mysql\_query("select ...");
$first = 1;
while($data=mysql\_fetch\_assoc($r)) {
 if ($first) { // Überschriften erste Zeile
 $first=0;
 fputs($F, "\"".implode("\",\"", array\_keys($data))."\"\n"
 }
 reset($data);
 while(list($k, $v) = each($data)) 
 $data[$k]= ereg\_replace("\015(\012)?", "\012", str\_replace("\"","\"\"", $v));
$line = "\"".implode("\",\"", $data)."\"\n";
fputs($F, $line);
}
fclose($F);

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Kann mir da jemand helfen?

Warum machst du das nicht einfach mit PHPMyAdmin? Hast du die
Zeilenumbrüche in /n umgewandelt?

gruss Jan

Die Datei muss täglich erstellt werden. Da ist es sehr
umständlich alles per MyAdmin erstellen zu lassen. Und was
mache ich, wenn ich mal im Urlaub,… bin?
Würde die Herstellungsdatei bei cronjob erstellen lassen. So
habe ich mir das jedenfalls vorgestellt.

Ganz dumme Frage: mysqldump hast du da nicht zufällig, dann
kannst du dir das Programmieren sparen, sofern mysqld auf der
selben Maschine läuft. Mit -T bekommst du da auch CSV raus.

Kann man mit mysqldump auch bestimmte Felder einer Tabelle exportieren?

Ansonten schau in die build_dump.lib.php im Libraries
Verzeichnis von phpMyAdmin, wie phpMyAdmin die CSV-Datei baut.
So kompliziert ist das ja nun auch nicht, in jedem Feld "
durch „“ zu ersetzen und das ganze dann mit implode
zusammenzusetzen zu einer Zeile:
(ungetestet)

$F = fopen(date(„y-m-d“).".csv",„w“);
$r = mysql_query(„select …“);
$first = 1;
while($data=mysql_fetch_assoc($r)) {
if ($first) { // Überschriften erste Zeile
$first=0;
fputs($F, „“".implode("","", array_keys($data)).""\n"
}
reset($data);
while(list($k, $v) = each($data))
$data[$k]= ereg_replace("\015(\012)?", „\012“,
str_replace(""","""", $v));
$line = „“".implode("","", $data).""\n";
fputs($F, $line);
}
fclose($F);

Die build_dump.lib.php habe ich nach ein wenig suchen auch gefunden. Habe mir dann was zusammengebaut, was mir eine Datei auswirft. Habe zwar nicht alles verstanden, was ich gemacht hat, aber ein wenig Glück braucht man auch.
Ich werde mir dein Code aber nochmal durchschauen. Da kann ich sicherlich noch was lernen.

Hallo,

Kann mir da jemand helfen?

Warum machst du das nicht einfach mit PHPMyAdmin? Hast du die
Zeilenumbrüche in /n umgewandelt?

gruss Jan

Die Datei muss täglich erstellt werden. Da ist es sehr
umständlich alles per MyAdmin erstellen zu lassen. Und was
mache ich, wenn ich mal im Urlaub,… bin?
Würde die Herstellungsdatei bei cronjob erstellen lassen. So
habe ich mir das jedenfalls vorgestellt.

Ganz dumme Frage: mysqldump hast du da nicht zufällig, dann
kannst du dir das Programmieren sparen, sofern mysqld auf der
selben Maschine läuft. Mit -T bekommst du da auch CSV raus.

Kann man mit mysqldump auch bestimmte Felder einer Tabelle
exportieren?

Nein, leider nicht, nur die WHERE - Bedingungen kann man angeben, aber es werden immer alle Spalten exportiert.

Alexander