(In C) Datei erzeugen

Buba235

Erfahrenes Mitglied
Hallo!

Ich hab gestern schon mal mein Problem gepostet. Mittlerweile hab ich es gelöst aber ein neues Problem. Hier mal mein Code:

Code:
void create_file(MYSQL *conn) { 
        const char *sql; 

        /*Inhalt der Tabelle trace_data in Datei schreiben*/ 
        sql = "SELECT * INTO OUTFILE '/home/tracer/wlan_DB/file_writer/test.txt' \ 
                           FIELDS TERMINATED BY',' LINES TERMINATED BY '\n' \ 
                           FROM trace_data"; 
      
        mysql_query(conn, sql); 

}/*Ende der Funktion create_file*/

Dieser Code würde einwandfrei funktionieren wenn ich nicht versuchen würde das File in meinem Verzeichnis zu erzeugen. Es kommt immer der Fehler: Can`t create/write to file 'Verzeichnis' (Errcode: 2). Okay ich hab das soweit verstanden. Aber jetzt ist meine Frage. Wenn ich das ganze dann nur über fopen, fwrite, fclose machen möchte, wo muss ich dann meinen String "SELECT * FROM tabelle" hinschreiben? Wie sieht dann mein sql_query() aus? Ich hab davon keine Ahnung und wäre für Hilfe dankbar!
 
Hi.

Erstmal brauchst du hier nicht drängeln wenn nach 90 min. noch keine Antwort da ist, OK?!

Vielleicht solltest du dir nochmal die Dokumentation zum INTO OUTFILE durchlesen (http://dev.mysql.com/doc/refman/4.0/de/select.html):
Die SELECT ... INTO OUTFILE 'datei'-Form von SELECT schreibt die ausgewählten Zeilen in eine Datei. Die Datei wird auf dem Server-Host erzeugt und darf nicht bereits bestehen (das verhindert unter anderem, dass Datenbanktabellen und Dateien wie /etc/passwd zerstört werden). Sie benötigen die file-Berechtigung auf dem Server-Host, um diese Form von SELECT auszuführen.

SELECT ... INTO OUTFILE ist hauptsächlich dafür vorgesehen, um eine Tabelle auf der Server-Maschine schnell zu dumpen. Wenn Sie die resultierende Datei auf einem anderen Host als dem Server-Host haben wollen, können Sie SELECT ... INTO OUTFILE nicht benutzen. In diesem Fall sollten Sie statt dessen ein Client-Programm wie mysqldump --tab oder mysql -e "SELECT ..." > outfile benutzen, um die Datei zu erzeugen.

Der Query-String würde dann genauso aussehen nur ohne den INTO OUTFILE .. SEPERATED BY Teil natürlich.

Mit dem Resultat der Anfrage kannst du dann machen was du willst - natürlich kannst du das auch in eine Datei schreiben. Lies dir einfach nochmal das Kapitel in dem Galileo Buch durch (http://www.galileo-press.de/openbook/c_von_a_bis_z/c_027_003.htm) - da sind doch sogar 2 Funktionen beschrieben die eine Tabelle auf dem Bildschirm ausgeben, was im Grunde ja nichts anderes ist als eine Ausgabe in eine Datei.

Gruß
 
Zurück