PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → (Bruit] Mysql créer des tables par script avec un nom de table en variable
(Bruit] Mysql créer des tables par script avec un nom de table en variable
Iniciado por roumegou, 21,mar. 2019 10:42 - 6 respuestas
Publicado el 21,marzo 2019 - 10:42
Bonjour,

j'en appelle à ceux qui ont des connaissances en script sous mysql.
j'essaie désespérement de faire quelque chose de très simple et je bute
sur des pb de syntaxe.

Je travaille sur une base mysql et pendant un temps je veux sauvegarder
tous les jours une situation de certains enregistrements de ma table,
dans une autre base
J'ai besoin de cet historique au jour le jour en cas de pb ou de
litiges.

Et je veux que cela soit un script sql car cela doit être envoyé par le
serveur par un outil mysqlautoBackup (il peut aussi envoyer des
scripts)

Mais je n'arrive pas à nommer automatiquement ma table de sauvegarde
avec la date du jour

Voilà mes deux requetes dans le script
select @ntable:=concat('TWDLA_',date_format(curdate(),'%Y%m%d')) from
dual;

create table savetwdla.TWDLA_20190321 select * from
mabasesource.people_action where pac_type='TWDLA';

donc 1ère requete pour me donner un nom de table comme TWDLA_20190321
2ème requete pour extraire mes données de la base dans une base à part;
sous le nom de TWDLA_AAAAMMJJ

Mon problème : comment utiliser la variable @ntable dans mon ordre
create ?

2 h que je cherche la syntaxe sans succès.

Je vous remercie de votre aide.

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Miembro registrado
299 mensajes
Publicado el 21,marzo 2019 - 11:12
Je passerais par une chaine de caractères
LC_SQL = "select @ntable:=concat('TWDLA_Date,'%Y%m%d')) from dual;"

Je remplacerais les paramètres par la valeur
LC_SQL = remplace(LC_SQL, "'%Y%m%d')", date_format(curdate())

Il ne reste plus qu'à exécuter
HExecuteRequeteSQL(LC_SQL

Ce qui a le mérite de fonctionner pour TOUS les moteurs de base de données
Publicado el 21,marzo 2019 - 11:48
MICHEL a émis l'idée suivante :
Je passerais par une chaine de caractères
LC_SQL = "select @ntable:=concat('TWDLA_Date,'%Y%m%d')) from dual;"

Je remplacerais les paramètres par la valeur
LC_SQL = remplace(LC_SQL, "'%Y%m%d')", date_format(curdate())

Il ne reste plus qu'à exécuter HExecuteRequeteSQL(LC_SQL

Ce qui a le mérite de fonctionner pour TOUS les moteurs de base de données

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com


je te remercie de ta réponse MICHEL
Mais là je suis hors contexte wlangage
(sinon je n'aurais aucun problème et effectivement je n'aurais pas
besoin de faire une requete pour avoir la date du jour)
je dois être en script sql seul car cela doit être envoyé par un
système de scheduller propre à un outil de sauvegarde qui tourne sur le
serveur.
De plus en une seule requete, je travaille sur deux databases
différentes. Alors que le sqlconnecte est forcément sur une base.

--
Roumegou Eric
Miembro registrado
299 mensajes
Publicado el 21,marzo 2019 - 12:15
J'utilise des systèmes de ce type mais je transite par un langage tiers genre WD ou Delphi
J'exporte d'une base mon script de sauvegarde et je le rejoue vers une autre.

Dans cotre cas si c'est MySQL qui doit exécuter la totalité (si j'ai bien compris) il faudrait peut-être mieux passer par un forum spécialisé : https://www.developpez.net/forums/f236/php/php-base-donnees/
Publicado el 21,marzo 2019 - 12:46
Après mûre réflexion, Roumegou Eric a écrit :
MICHEL a émis l'idée suivante :
Je passerais par une chaine de caractères
LC_SQL = "select @ntable:=concat('TWDLA_Date,'%Y%m%d')) from dual;"

Je remplacerais les paramètres par la valeur
LC_SQL = remplace(LC_SQL, "'%Y%m%d')", date_format(curdate())

Il ne reste plus qu'à exécuter HExecuteRequeteSQL(LC_SQL

Ce qui a le mérite de fonctionner pour TOUS les moteurs de base de données

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

je te remercie de ta réponse MICHEL
Mais là je suis hors contexte wlangage
(sinon je n'aurais aucun problème et effectivement je n'aurais pas besoin de
faire une requete pour avoir la date du jour)
je dois être en script sql seul car cela doit être envoyé par un système de
scheduller propre à un outil de sauvegarde qui tourne sur le serveur.
De plus en une seule requete, je travaille sur deux databases différentes.
Alors que le sqlconnecte est forcément sur une base.


bonjour,

j'ai une solution à te proposer mais comme cela ne concerne pas le
wlangage je te propose que l'on continu en privé donne moi un mail pour
je puisse te joindre merci

--
Cordialement JeAn-PhI
Publicado el 22,marzo 2019 - 10:45
JeAn-PhI a présenté l'énoncé suivant :
Après mûre réflexion, Roumegou Eric a écrit :
MICHEL a émis l'idée suivante :
Je passerais par une chaine de caractères
LC_SQL = "select @ntable:=concat('TWDLA_Date,'%Y%m%d')) from dual;"

Je remplacerais les paramètres par la valeur
LC_SQL = remplace(LC_SQL, "'%Y%m%d')", date_format(curdate())

Il ne reste plus qu'à exécuter HExecuteRequeteSQL(LC_SQL

Ce qui a le mérite de fonctionner pour TOUS les moteurs de base de données

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

je te remercie de ta réponse MICHEL
Mais là je suis hors contexte wlangage
(sinon je n'aurais aucun problème et effectivement je n'aurais pas besoin
de faire une requete pour avoir la date du jour)
je dois être en script sql seul car cela doit être envoyé par un système de
scheduller propre à un outil de sauvegarde qui tourne sur le serveur.
De plus en une seule requete, je travaille sur deux databases différentes.
Alors que le sqlconnecte est forcément sur une base.

bonjour,

j'ai une solution à te proposer mais comme cela ne concerne pas le wlangage
je te propose que l'on continu en privé donne moi un mail pour je puisse te
joindre merci


Bonjour Jean-Phi
je te remercie de ta réponse
mon mail est roumegou"arobase"4usinfo.com

et pour répondre à Michel, effectivement j'ai mis mon message sur
developpez.com.

J'ai eu une réponse pour l'instant, un tantinet péremptoire à mon goût
et par trop donneuse de leçons.
Cette réponse ne me donnait pas la solution technique à ce point de
programmation, mais effectivement une autre façon de faire sans avoir
besoin d'une variable (tout mettre dans la même table avec la date du
jour en plus)

Bon Ok, je vais faire comme cela car fonctionnellement cela fera le
boulot.
Mais je reste interessé par le "comment" on ferait avec une variable.

Je vous remercie tous encore de votre aide.

--
Roumegou Eric
Publicado el 22,marzo 2019 - 11:38
Dans son message précédent, Roumegou Eric a écrit :
JeAn-PhI a présenté l'énoncé suivant :
Après mûre réflexion, Roumegou Eric a écrit :
MICHEL a émis l'idée suivante :
Je passerais par une chaine de caractères
LC_SQL = "select @ntable:=concat('TWDLA_Date,'%Y%m%d')) from dual;"

Je remplacerais les paramètres par la valeur
LC_SQL = remplace(LC_SQL, "'%Y%m%d')", date_format(curdate())

Il ne reste plus qu'à exécuter HExecuteRequeteSQL(LC_SQL

Ce qui a le mérite de fonctionner pour TOUS les moteurs de base de
données

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

je te remercie de ta réponse MICHEL
Mais là je suis hors contexte wlangage
(sinon je n'aurais aucun problème et effectivement je n'aurais pas besoin
de faire une requete pour avoir la date du jour)
je dois être en script sql seul car cela doit être envoyé par un système
de scheduller propre à un outil de sauvegarde qui tourne sur le serveur.
De plus en une seule requete, je travaille sur deux databases différentes.
Alors que le sqlconnecte est forcément sur une base.

bonjour,

j'ai une solution à te proposer mais comme cela ne concerne pas le wlangage
je te propose que l'on continu en privé donne moi un mail pour je puisse te
joindre merci

Bonjour Jean-Phi
je te remercie de ta réponse
mon mail est roumegou"arobase"4usinfo.com

et pour répondre à Michel, effectivement j'ai mis mon message sur
developpez.com.

J'ai eu une réponse pour l'instant, un tantinet péremptoire à mon goût et par
trop donneuse de leçons.
Cette réponse ne me donnait pas la solution technique à ce point de
programmation, mais effectivement une autre façon de faire sans avoir besoin
d'une variable (tout mettre dans la même table avec la date du jour en plus)

Bon Ok, je vais faire comme cela car fonctionnellement cela fera le boulot.
Mais je reste interessé par le "comment" on ferait avec une variable.

Je vous remercie tous encore de votre aide.


merci beaucoup à Jean-Phi qui m'a donné la voie !!!
vil petit scarabée que je suis
lol

--
Roumegou Eric