[SQL] Script de création de données de test

Script de création de données de test [SQL] - Programmation

Marsh Posté le 30-05-2002 à 12:01:54    

Salut tout le monde,
 
Une question assez simple mais qui nécessite de l'expérience. J'ai une BD de production (par exemple Client) qui contient un certain nombre de records. Comment faire pour exporter par exemple 2000 clients dans un script SQL me permettatn de les recréer dans un BD de test.
 
Plus clairement, je voudrais récupérer facilement un script qui me permette de créer X clients dans un BD de test, basé sur le contenu de la BD de prod.
 
Je précise que les solution create Table Client_test as ... ne m'intéresse pas, ni les réplications d'ailleurs.
 
Ca doit etre portable. Si qqun a une idée, merci de la communiquer
 
 :hello:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-05-2002 à 12:01:54   

Reply

Marsh Posté le 30-05-2002 à 13:44:32    

haha le pauv'  bide.. presque pire que le mien  :lol:

Reply

Marsh Posté le 30-05-2002 à 13:47:36    

:fuck:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-05-2002 à 13:48:19    

au fait merci pour le up :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-05-2002 à 13:50:04    

c'est le même SGBD, derrière??? Avec MySQL, nous, on fait un tar du répertoire de la DB, on le ftpise, et hop! :D

Reply

Marsh Posté le 30-05-2002 à 13:58:58    

oracle. Mais le deal c'est que j'ai plus d'un million de records et je veux juste en prendre 1000 pour faire mes tests. Le truc aussi c'est que je devrais pouvoir lancer ce scrpt souvent pour récupérer une BD dans un étant "neuf".


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-05-2002 à 14:33:17    

oracle reconnait les commandes DESCRIBE, ... ?
sinon ça sert à rien que je te fasse un script (ou que j'essaye)


---------------
...oups kernel error...
Reply

Marsh Posté le 30-05-2002 à 14:34:36    

ethernal a écrit a écrit :

oracle reconnait les commandes DESCRIBE, ... ?
sinon ça sert à rien que je te fasse un script (ou que j'essaye)  




non
 
(et, euh, utilisateurs de mysql, y'a mysqldump dans le /bin qui est bien pratique, si vous connaissiez pas:-))

Reply

Marsh Posté le 30-05-2002 à 14:36:56    

SELECT INSERT ??


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 30-05-2002 à 14:37:16    

oui c vrai mysqldump je l'oublie chaque fois :D
 
mais comme il voulait un script...
Faut d'abord que je connaisse les commandes pour montrer le contenu (taille des champs, format, ...) de la table...
 
sinon il y a moyen de faire un script ou tu passe le nom de la base, de la table, de la nouvelle base, le nombre d'enregs et qui te crée une nouvelle base. c'est ça que tu veux non ?


---------------
...oups kernel error...
Reply

Marsh Posté le 30-05-2002 à 14:37:16   

Reply

Marsh Posté le 30-05-2002 à 14:38:14    

ethernal a écrit a écrit :

oui c vrai mysqldump je l'oublie chaque fois :D
 
mais comme il voulait un script...




ben mysqldump il te balance un script sql...
c ça qu'il veut l'ami darklord...

Reply

Marsh Posté le 30-05-2002 à 14:40:54    

greg@freestarthu a écrit a écrit :

 
ben mysqldump il te balance un script sql...
c ça qu'il veut l'ami darklord...  




 
bha moi j'ai compris qu'il voulait un script modulable comme j'ai décrit ci-dessus, qui fct avec n'importe quel bb.


---------------
...oups kernel error...
Reply

Marsh Posté le 30-05-2002 à 14:59:42    

ce que je veux c'est simple. C'est prendre les DONNEES d'une table en production et les sauver dans un fichier SQL pour me permettre de le lancer autant de fois que je veux pour récupérer des données de tests.
 
Donc
 
Pas de replica, pas de copie rien
 
En gros je veux générer autmatiquement 1000 Insert INTO .... avec des données d'une base de production


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-05-2002 à 15:04:02    

bah....Avec MySQL (je sais pas si ça marche avec Oracle), on fait aussi un fichier de commandes MySQL.....(30 minutes après)
t'ain, tu m'en fais voir de belles!! :D:D Je devrais pas répondre aux défis!! :D:D
 
Si tu met ça dans un fichier (bash!!)
 

Citation :


#!/bin/sh
REQUEST=$@
 
TMP=/tmp/tmp_$$
 
echo "$REQUEST" > $TMP
 
echo "Target database : "
read TARGET
 
FIELDS=`mysql -u root < $TMP | head -1 | awk ' { cmd="("; for (i=1; i < NF; i++) {cmd=cmd $i ","} print(cmd $NF " )" ) }'`
 
AWKCMD="awk ' { cmd=\"insert into $TARGET $FIELDS values (\";
                for (i=1; i< NF; i++) {
                      cmd=cmd \"\\\"\"\$i\"\\\"\,\"
                }
                print (cmd \"\\\"\"\$NF\"\\\" )\" ) }'"
 
mysql -u root < $TMP | tail | eval $AWKCMD
 

 
 
 
Avec une table qui a cette structure :  
 
+---------+------------------+------+-----+---------+-------+
| Field   | Type             | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| townId  | varchar(30)      |      | PRI |         |       |
| day     | int(10) unsigned |      | PRI | 0       |       |
| minTemp | int(10) unsigned |      |     | 0       |       |
| maxTemp | int(10) unsigned |      |     | 0       |       |
| icon    | varchar(20)      |      |     |         |       |
+---------+------------------+------+-----+---------+-------+
 
en lançant :  
 
getDBvalues "select * from DBweather.Meteo limit 10"
 
et en mettant DBtoto quand on me pose une question, j'obtiens :  
 
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54909","3","23","31","P3" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54909","2","22","30","P3" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54908","3","16","17","P7" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54909","1","21","30","P3" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54908","2","12","19","P7" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54907","3","18","21","P8" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54909","0","22","30","P3" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54908","1","13","23","P3" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54907","2","17","19","P8" )
insert into DBtoto (townId,day,minTemp,maxTemp,icon) values ("54906","3","13","21","P6" )
 
 
Donc, en faisant une redirection, plus de problème, t'as ton fichier de commande SQL...
 
Bon après, pâr contre....pour les autres SGBD, je garantis rien!

 

[jfdsdjhfuetppo]--Message édité par gfive le 30-05-2002 à 15:24:04--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 30-05-2002 à 15:38:05    

up?

Reply

Marsh Posté le 30-05-2002 à 16:01:07    

oui oui j'ai vu désolé. Pas encore eu le temps de regarder ta susperbe solution. Promis j'y jette un oeil asap !!!


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed