SELECT INTO OUTFILE erzeugt keine Datei

zachy

Aktiver Benutzer
Beiträge
32
MySQL-Version: MySQL 5.5
Betriebssystem: Windows 7 Prof 64 Bit

Hallo Community,

ich möchte eine Tabelle aus einem MySQL-Server in eine CSV-Datei schreiben. Leider erzeugt der Befehl SELECT INTO OUTFILE keine CSV-Datei.

Code:
SELECT * INTO OUTFILE
'C:\Users\Benutzername\Documents\export.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'
FROM tabelle;

Server und Client befinden sich auf demselben Rechner. Meiner Meinung nach ist der Befehl korrekt. Nur kann ich unter dem angegebenen Verzeichnis wie gesagt die CSV-Datei export.csv nicht finden.

Wo liegt der Fehler?

Viele Grüße
zachy
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
10.014
MySQL-Version: MySQL 5.5
Betriebssystem: Windows 7 Prof 64 Bit

Hallo Community,

ich möchte eine Tabelle aus einem MySQL-Server in eine CSV-Datei schreiben. Leider erzeugt der Befehl SELECT INTO OUTFILE keine CSV-Datei.

Code:
SELECT * INTO OUTFILE
'C:\Users\Benutzername\Documents\export.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'
FROM tabelle;

Server und Client befinden sich auf demselben Rechner. Meiner Meinung nach ist der Befehl korrekt. Nur kann ich unter dem angegebenen Verzeichnis wie gesagt die CSV-Datei export.csv nicht finden.

Wo liegt der Fehler?

Viele Grüße
zachy


Die Syntax schaut mir arg falsch aus, soweit ich weiß gehört das INTO OUTFILE an das Ende Befehls und nicht zwischen Spaltenliste des Selects (hier *) und Tablename.
http://dev.mysql.com/doc/refman/5.1/de/select.html

Eigentlich sollte Dir MySQL eine passende Fehlermeldung entgegen werfen ...

Andreas
 

zachy

Aktiver Benutzer
Beiträge
32
Die Syntax schaut mir arg falsch aus, soweit ich weiß gehört das INTO OUTFILE an das Ende Befehls und nicht zwischen Spaltenliste des Selects (hier *) und Tablename.
http://dev.mysql.com/doc/refman/5.1/de/select.html

Eigentlich sollte Dir MySQL eine passende Fehlermeldung entgegen werfen ...

Andreas

Hallo Andreas,

das MySQL-Referenzhandbuch spricht von der gleichen Synatx, die ich auch verwendet habe:

MySQL 5.1 Referenzhandbuch. 13.2.7 SELECT. [URL]http://dev.mysql.com/doc/refman/5.1/de/select.html[/URL] Stand: 10.02.2013 schrieb:
Es folgt ein Beispiel, das eine Datei im CSV-Format erzeugt, welches von vielen Programmen verwendet wird:
Code:
SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

Demnach muss das INTO OUTFILE doch zwischen die Spaltenliste des SELECT-Befehls und den Tabellenname.

Gruß zachy
 

akretschmer

Datenbank-Guru
Beiträge
10.014
Hallo Andreas,

das MySQL-Referenzhandbuch spricht von der gleichen Synatx, die ich auch verwendet habe:



Demnach muss das INTO OUTFILE doch zwischen die Spaltenliste des SELECT-Befehls und den Tabellenname.

Gruß zachy


Hrm. Soweit hatte ich nicht gelesen, ich hatte mich an der Syntaxdarstellung gleich am Anfang orientiert.

Nun, vielleicht fehlt Dir das FILE-Recht, oder aber Schreibrechte in dem Ordner. MySQL und Windows, ...


Andreas
 

zachy

Aktiver Benutzer
Beiträge
32
Nein, daran kann es nicht liegen. In Windows bin als Administrator angemeldet, in MySQL als Root.

Es ist doch aber seltsam, dass keine Fehlermeldung ausgeworfen wird. Der Befehl wird ja erfolgreich ausgeführt, nur ist kein Ergebnis sichtbar.
 

akretschmer

Datenbank-Guru
Beiträge
10.014
Nein, daran kann es nicht liegen. In Windows bin als Administrator angemeldet, in MySQL als Root.

Es ist doch aber seltsam, dass keine Fehlermeldung ausgeworfen wird. Der Befehl wird ja erfolgreich ausgeführt, nur ist kein Ergebnis sichtbar.


Du sagts 'erfolgreich'. So etwa:

Code:
mysql> select * into outfile 'bla.csv' from bla;
Query OK, 2 rows affected (0.02 sec)
 

Margit

Fleissiger Benutzer
Teammitglied
Beiträge
56
Ich kenne mich mit Mysql nicht besonders gut aus, aber ich denk mir das könnte ev. auch an der Pfadangabe mit \ liegen? Verwende doch mal probeweise das unter Linux/Unix übliche / statt dem Windows-üblichen \
Oder nimm probeweise etwas ohne Pfadangabe also nur datei.csv

So, hab jetzt auch die Bestätigung dafür im Handbuch gefunden:
http://dev.mysql.com/doc/refman/5.1/de/load-data.html

"Windows-Pfadnamen müssen unter Verwendung von Schrägstrichen (statt Backslashs) angegeben werden. Wenn Sie Backslashs (umgekehrte Schrägstriche) verwenden, müssen Sie sie doppelt angeben."
 
Werbung:
Oben