Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MySQL Trigger -> CSV Export [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MySQL Trigger -> CSV Export


 
Skrok
04-02-2010, 13:51 
 
Hallo,

ich habe mir einen Trigger geschrieben der nach einem Tabellenupdate in das Lokale-Filesystem eine CSV Datei schreibt.

Nun kann es vorkommen das im selben Moment mehrere Datenzeilen geupdatet werden. Ich benötige daher einen Zähler (Timestamp) für die Dateinamen.

Wie kann ich denn das File mit einer Variable spicken?


SET @OUTFILE = CONCAT(CONCAT('C:\temp\outfile_',@TIME_STAMP), '.csv');

SELECT * INTO OUTFILE @OUTFILE
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n' FROM ...


So geht es leider nicht. Hat jemand eine Idee?


Gruß
Jan

 
onemorenerd
04-02-2010, 14:07 
 
Prepared Statement (http://forums.mysql.com/read.php?22,167078,167078#msg-167078)

 
AmicaNoctis
04-02-2010, 14:23 
 
Hallo,

das wird trotzdem nicht funktionieren. Innerhalb von Triggern dürfen bei MySQL keinerlei dynamische Statements aufgerufen werden. Das Exportieren innerhalb eines Triggers geht also nur mit einem hartgecodeten Dateinamen. Insofern ist dein Vorhaben mit MySQL nicht umsetzbar.

Gruß,

Amica

 
Skrok
04-02-2010, 14:26 
 
Hallo hab ich auch gerade herausgefunden *grmlt* ... gut dann werd was anderes probieren!

 
AmicaNoctis
04-02-2010, 14:32 
 
Ich schlage vor, du fügst eine Spalte (z. B. "`last_export` datetime default null") zu der Tabelle hinzu und fragst mit PHP periodisch diese Tabelle nach Datensätzen mit einem null-Wert in dieser Spalte ab und setzt sie danach auf "now()".

Ich hatte dasselbe Problem und hab mir dann mit PHP einen Dienst (Windows) geschrieben, der das minütlich macht.

 
Skrok
04-02-2010, 15:01 
 
Ich wollte eigentlich auf alles "externe" verzichten und dann nur mit der Datenbank machen. Ich glaub ich steig auf ne Oracle um ;)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:52 Uhr.