|
|
|
|
Posté par
steelspirit, le mercredi 25 juin 2003 à 14:44:55Salut steelspirit
A la place de n DORP TABLE.... tu peux faire un DROP DATABASE.... C"est assez efficace :) sauvegarde bien la structure de ta db avant de faire ca :) @++ Na kaer eo va Breizh, gand ar mor glaz èn-dro dezi !
|
>A la place de n DORP TABLE.... tu peux faire un DROP DATABASE
Ah oui ! c sur vaut mieux remplacer le DORP ;-p Vous hésitez entre Linux et Windows ? Vous voulez dépenser du temps ou de l'argent ? :-D |
arf c'est malin ca... :-p
Ca va batman ? Na kaer eo va Breizh, gand ar mor glaz èn-dro dezi ! |
Ben ça va, mais là jvais me coucher ;p
@++ Ps : retour de la bonne vieille signature, mais en gras maintenant :) Vous hésitez entre Linux et Windows ? Vous voulez dépenser du temps ou de l'argent ? :-D |
re bonjour !
J'ai encore une autre question : maintenant je voudrai, toujours en sql, effacer le contenu de toutes les tables et donc garder une base avec des tables vides. Bien entendu on peu faire des delete from nom_table mais c lourd quand y a plein de table ! - T'as pas vu Chloraine ? - C'est qui Chloraine ? - Ah ! Ah ! Ah ! |
Là par-contre il n'y a pas de solution (non détournées) que de faire un
"DELETE FROM 'table' " Sinon un astuce consiste a en registrer la structure de la base avec les ennoncés DROP TABLE (selon ton sgbd ca se fait tout seul :)) exemple: Sous mysql "mysqldump --add-drop-table " DROP TABLE IF EXISTS table1; tu enregistre ca dans un fichier et tu executes cette requette quand tu veux vider la base tu executes la requete du-dit fichier... Na kaer eo va Breizh, gand ar mor glaz èn-dro dezi ! |
Il existe une table contenant le nom de toutes tes tables :
select table_name from user_tables; Je ne peux pas tester ici (je veux pas risquer d'effacer toutes les tables sur lesquelles je bosser ;)), mais renseigne toi sur le SQL dynamique. En effet : CURSOR c_mestables IS et ensuite faire for cur_table in c_mestables Ca parait alléchant comme ça, mais ça ne marchera pas ;) Il te dira qu'il ne connait pas la table cur_table :). Je crois qu'il y a donc ptete une solution avec le package dbms_sql @++ Vous hésitez entre Linux et Windows ? Vous voulez dépenser du temps ou de l'argent ? :-D
|
Au fait, c'est quel SGBD ?
@++ Vous hésitez entre Linux et Windows ? Vous voulez dépenser du temps ou de l'argent ? :-D |
merci pour votre aide les gars !
c'est vrai j'ai oublié de préciser : c'est postgreSQL ! L'idée de créer un cursor me parait bien. Sinon y a toujours moyen de bidouiller : -> on dump la structure de la base : pg_dump -s nom_base > structure.sql -> on efface la base : drop database nom_base -> on restore la base : pgsql nom_base < structure.sql mais bon c pas tres propre ! je v essayer avec vos méthodes. A+ - T'as pas vu Chloraine ? - C'est qui Chloraine ? - Ah ! Ah ! Ah ! |
En fait je ne sais pas pourquoi je'ai donné une explication si compliquer pour un probleme si simple :-/
dans un fichier (purge.sql par exemple) DELETE FROM "table1"; DELETE FROM "table2"; DELETE FROM "table3"; ... et tu n'as plus qu'a lancer ca quand tu en as besoin ;-p Na kaer eo va Breizh, gand ar mor glaz èn-dro dezi !
|
Je pense que la méthode donnée par asevere est celle qui a le plus de chances de fonctionner sous postgre (à moins que quelqu'un me dise que le PL/SQL a été porté sous postgre)...
Il faut que tu trouves l'équivalent de la table user_tables. Je pense qu'une table de ce type (contenant le nom de toutes les tables de la BDD) existe sous postgre. Tu fais un : select lenomdetable from cettetableenquestion; que tu envoies dans un fichier. Ensuite: awk '{ print "drop table " $1 }' lenomdetestables.sql > del_tables.sql Et tu executes le del_tables.sql ... @++ Vous hésitez entre Linux et Windows ? Vous voulez dépenser du temps ou de l'argent ? :-D |
si postgre supporte le pl/sql !
DECLARE curs1 refcursor; curs2 CURSOR FOR SELECT * FROM tenk1; curs3 CURSOR (key integer) IS SELECT * FROM tenk1 WHERE unique1 = key; - T'as pas vu Chloraine ? - C'est qui Chloraine ? - Ah ! Ah ! Ah ! |
Here is an Oracle PL/SQL function:
CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name IN varchar, v_version IN varchar) RETURN varchar IS BEGIN IF v_version IS NULL THEN RETURN v_name; END IF; RETURN v_name || '/' || v_version; END; / show errors; This is how this function would look when ported to PostgreSQL: CREATE OR REPLACE FUNCTION cs_fmt_browser_version(varchar, varchar) RETURNS varchar AS ' DECLARE v_name ALIAS FOR $1; v_version ALIAS FOR $2; BEGIN IF v_version IS NULL THEN return v_name; END IF; RETURN v_name || ''/'' || v_version; END; ' LANGUAGE plpgsql; - T'as pas vu Chloraine ? - C'est qui Chloraine ? - Ah ! Ah ! Ah ! |
Le package standard dbms_sql aussi ?
@++ Vous hésitez entre Linux et Windows ? Vous voulez dépenser du temps ou de l'argent ? :-D |