Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 08/07/2011 11:22:20
- marc.stx
- Membre
Trier et sauvegarder une table
Bonjour,
J'essaye d'effectuer un opération toute simple, mais je n'y arrive pas.
Je voudrai trier une table en fonction d'une variable et enregistrer la table.
Voici le script utilisé :
SELECT * FROM ma_table ORDER BY "ma_var" FOR UPDATE
La table est bien triée, mais elle n'est pas sauvegardée triée.
Hors ligne
#2 08/07/2011 11:57:55
- gleu
- Administrateur
Re : Trier et sauvegarder une table
Le SELECT ... FOR UPDATE n'est pas fait pour ça. La première solution serait d'utiliser CLUSTER. Les données seront stockées triées d'après un index fourni en argument de CLUSTER (http://docs.postgresql.fr/9.0/sql-cluster.html). Une deuxième solution serait de créer une nouvelle table identique à la première (CREATE TABLE ... (LIKE table_a_copier autres_options)...), puis d'y insérer les données (INSERT INTO nouvelle_table SELECT * FROM table_a_copier ORDER BY la_colonne_de_tri). Ensuite, suppression de l'ancienne table, renommage de la nouvelle. Le tout dans une transaction pour que cela ne gêne personne, et en verrouillant la table pour que personne ne la modifie pendant la transaction.
Guillaume.
Hors ligne
#3 08/07/2011 12:22:49
- marc.stx
- Membre
Re : Trier et sauvegarder une table
Ok, en fait ce n'est pas vraiment possible de le faire directement.
Merci beaucoup.
Hors ligne
#4 08/07/2011 12:40:06
- marc.stx
- Membre
Re : Trier et sauvegarder une table
Visiblement la syntaxe n'est pas bonne ? ça bloque sur le "LIKE"
CREATE TABLE new_table LIKE old_table
INSERT INTO new_table SELECT * FROM old_table ORDER BY ma_variable
Dernière modification par marc.stx (08/07/2011 12:40:30)
Hors ligne
#5 08/07/2011 13:24:48
- gleu
- Administrateur
Re : Trier et sauvegarder une table
Le LIKE doit être compris dans les parenthèses comme je l'indiquais plus haut. Voir aussi http://docs.postgresql.fr/9.0/sql-select.html .
Guillaume.
Hors ligne
#6 08/07/2011 14:27:38
- marc.stx
- Membre
Re : Trier et sauvegarder une table
Parenthèse plus virgule entre CREATE et INSERT voilà les erreurs.
Mon SQL est encore balbutiant...
Merci pour votre aide.
Hors ligne
Pages : 1