Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 15h58   #1
Membre chevronné
 
Avatar de airod
 
Benoit Martiré
Synapse médical, Sèvres (92)
Inscription : août 2004
Messages : 701
Détails du profil
Informations personnelles :
Nom : Benoit Martiré
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Synapse médical, Sèvres (92)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 701
Points : 771
Points : 771
Envoyer un message via Skype™ à airod
Par défaut export csv ou sql par un trigger

Bonjour,

Pour faire simple, savez vous s'il est possible via un trigger de faire un export CSV voir SQL des données d'une table?

merci
__________________
Pensez à la documentation en ligne, ca aide!

"Heureux ceux qui se libèrent de leurs chaines"
"Ne faites simple que si vous savez faire compliqué aussi !"
airod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 16h03   #2
Membre chevronné
 
Avatar de airod
 
Benoit Martiré
Synapse médical, Sèvres (92)
Inscription : août 2004
Messages : 701
Détails du profil
Informations personnelles :
Nom : Benoit Martiré
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Synapse médical, Sèvres (92)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 701
Points : 771
Points : 771
Envoyer un message via Skype™ à airod
Par défaut dynamisation du nom de fichier csv

Bonjour, par rapport a mon post précédent j'ai trouvé la réponse pour faire un export des données insérées dans une table via un trigger, mais il me reste un soucis quand même.

J'aimerais que le nom du fichier de sortie soit dynamique, par exemple qu'il soit daté.
voici le code que j'ai fait jusqu'a présent.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DELIMITER |
CREATE TRIGGER `TEST`.`ins_trig3` AFTER INSERT ON `TEST`.`account`
FOR EACH
ROW 
BEGIN 
DECLARE patth varchar(255);
SET patth='/home/temp/4test.csv';
SELECT *
INTO OUTFILE @patth
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM account
WHERE account.`acct_num` = NEW.`acct_num`
END
qui ne fonctionne pas

par contre celui ci fonctionne
Code :
1
2
3
CREATE TRIGGER ins_trig4 After INSERT ON account
FOR EACH ROW
SELECT * INTO OUTFILE '/home/temp/4test.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' FROM account WHERE account.`acct_num`=NEW.`acct_num`
comment faire pour dynamiser le nom du fichier csv.
merci d'avance.
__________________
Pensez à la documentation en ligne, ca aide!

"Heureux ceux qui se libèrent de leurs chaines"
"Ne faites simple que si vous savez faire compliqué aussi !"
airod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 11h36   #3
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Bonjour !

Citation:
qui ne fonctionne pas
Il se passe quoi exactement? Message d'erreur?

Sinon pour dynamiser le nom de ton fichier, tu peux concaténer le nom du fichier + la date, un truc du style :

Code :
1
2
 
SET myPath = CONCAT('path_de_base', DATE(NOW()));
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 13h29   #4
Membre chevronné
 
Avatar de airod
 
Benoit Martiré
Synapse médical, Sèvres (92)
Inscription : août 2004
Messages : 701
Détails du profil
Informations personnelles :
Nom : Benoit Martiré
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Synapse médical, Sèvres (92)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 701
Points : 771
Points : 771
Envoyer un message via Skype™ à airod
Voici le message :
Citation:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@patth
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM account
WHER' at line 7
en résumé lorsque je crée le trigger, j'ai une erreur de syntax. Apparement l'export csv ne peut pas récupérer le nom du fichier dans lequel il faut écrire les données depuis une variable.
Il faut (apparement) que cela soit en dur.

L'utilisation de requete dynamique (PREPARE + EXCECUTE) n'est pas non plus utiliser dans un TRIGGER.

Pour l'instant j'ai pas de solution.
__________________
Pensez à la documentation en ligne, ca aide!

"Heureux ceux qui se libèrent de leurs chaines"
"Ne faites simple que si vous savez faire compliqué aussi !"
airod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 17h53   #5
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Salut !

Ce trigger fonctionne(je me fais pas bouler lors de la création de celui-ci) chez moi :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
DELIMITER |
CREATE TRIGGER myTrigger AFTER INSERT ON T_MY_TABLE 
FOR EACH
ROW 
BEGIN
DECLARE patth varchar(255);
SET patth='/home/temp/4test.csv';
SELECT ESVASTAB_ID
INTO OUTFILE '@patth'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM T_MY_TABLE
WHERE T_MY_TABLE.MY_ID = NEW.MY_ID;
END|
!!!

Tu as oublié le ';' après WHERE

@+
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 10h26   #6
Membre chevronné
 
Avatar de airod
 
Benoit Martiré
Synapse médical, Sèvres (92)
Inscription : août 2004
Messages : 701
Détails du profil
Informations personnelles :
Nom : Benoit Martiré
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Synapse médical, Sèvres (92)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 701
Points : 771
Points : 771
Envoyer un message via Skype™ à airod
avez vous vérifié que le trigger s'éxécute bien? personnellement je n'ai pas de sortie (enfin presque)

En effet, mysql a créé un fichier de nom @patth et non du contenu de la variable @patth.

j'en suis toujours au même point.
__________________
Pensez à la documentation en ligne, ca aide!

"Heureux ceux qui se libèrent de leurs chaines"
"Ne faites simple que si vous savez faire compliqué aussi !"
airod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 17h49   #7
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Effectivement, je n'ai pas vérifié le fonctionnement réel du trigger.

Je vais voir si y'a moyen !

"L'utilisation de requete dynamique (PREPARE + EXCECUTE) n'est pas non plus utiliser dans un TRIGGER."

Pourquoi??

En faisant un ptit tour sur google, je suis tombé sur ça :
http://forums.mysql.com/read.php?97,23677,23677

Mais je n'ai pas testé ...
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h06.


 
 
 
 
Partenaires

Hébergement Web