Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 22/04/2011 12:07:43
- kenrio
- Membre
Modifier les noms de tables et de colonnes...
Bonjour,
J'ai un petit soucis, j'ai migré des bases mysql vers postgresql, mais j'ai un soucis toutes les tables et colonnes sont écrites avec des majuscules du style : Tt.Test
Donc je voulais savoir si il existait un moyen assez simple et rapide de renommer toutes les tables et les colonnes en supprimant les majuscules pour avoir comme résultat ce genre là : Tt.Test -> tt.test
Merci de votre aide.
Hors ligne
#2 22/04/2011 13:31:49
- Marc Cousin
- Membre
Re : Modifier les noms de tables et de colonnes...
Avant d'aller plus loin, elles sont réellement créées avec la casse ?
Que donne \d sur une des tables ?
Marc.
Hors ligne
#3 22/04/2011 13:39:53
- kenrio
- Membre
Re : Modifier les noms de tables et de colonnes...
oui, \d exemple :
db314825373 | GC_ArticleFournisseur | table |
Hors ligne
#4 22/04/2011 13:51:16
- Marc Cousin
- Membre
Re : Modifier les noms de tables et de colonnes...
argh, il va y avoir du sport…
À mon avis, vous avez deux solutions: soit écrire un programme externe qui fait les alter table qui vont bien (pas forcément très compliqué à écrire, en perl par exemple, ça dépend du système d'exploitation que vous avez), soit vous faites un dump de votre base, et vous convertissez tous les noms de tables et colonnes (le plus simple, c'est simplement d'enlever les doubles quotes autour des noms de tables et de champs dans le dump).
Vous êtes sous quel système d'exploitation ?
Marc.
Hors ligne
#5 22/04/2011 14:00:04
- kenrio
- Membre
Re : Modifier les noms de tables et de colonnes...
bases sur centos et le dev sous windows.
Mais je me demande si il vaut mieux pas modifier les tables et colonnes depuis mysql donc avant la migration.
Enfin je vais voir comment je peux scripter ça
Hors ligne
#6 22/04/2011 14:15:42
- Marc Cousin
- Membre
Re : Modifier les noms de tables et de colonnes...
Ça ne sera pas plus simple à faire sous mysql que sous postgres, ça sera identique je pense. C'est quoi l'outil de migration ? Il n'aurait pas une option pour ça ?
Marc.
Hors ligne
#7 22/04/2011 14:37:07
- kenrio
- Membre
Re : Modifier les noms de tables et de colonnes...
non j'ai regargé y a pas d' option pour ça, j'ai pris celui de Entreprise DB.
Hors ligne
#8 22/04/2011 15:05:32
- Marc Cousin
- Membre
Re : Modifier les noms de tables et de colonnes...
Ok. Mais c'est vraiment facile à scripter à mon avis
Par exemple, pour générer tous les alter table à exécuter :
SELECT 'ALTER TABLE '||table_schema||'."'||table_name||'" RENAME TO '||lower(table_name)||';' from information_schema.tables where lower(table_name)<>table_name;
Je laisse le code pour les colonnes comme exercice
Marc.
Hors ligne
#9 22/04/2011 16:58:16
- kenrio
- Membre
Re : Modifier les noms de tables et de colonnes...
Re, j'étais en train de chercher quand tu m'as donné ce moyen ^^
j'ai juste mis plus de temps que toi
Me reste plus qu'a faire pour les colonnes
merci
Hors ligne
#10 06/03/2019 13:06:07
- Sylvain M.
- Membre
Re : Modifier les noms de tables et de colonnes...
Merci Marc pour ta requête qui m'a été très utile !
(Il n'est jamais trop tard pour remercier, même 8 ans après !)
Voici celle pour les colonnes, pour ceux qui chercheraient encore :
SELECT 'ALTER TABLE '||table_schema||'."'||table_name||'" RENAME COLUMN "' || column_name || '" TO ' || lower(column_name) ||';' from information_schema.columns WHERE table_schema = 'monschema' AND lower(column_name)<>column_name;
Pour aller plus loin (et plus vite), quelle serait la méthode pour exécuter directement les requêtes issues du SELECT, si possible depuis PGAdmin ? (je me débrouille en SQL, mais pas encore en scripts, "plpgsql" si je ne me trompe pas ?).
Merci pour vos conseils !
A+
Sylvain M.
Dernière modification par Sylvain M. (06/03/2019 13:25:07)
Hors ligne
#11 06/03/2019 14:11:04
- rjuju
- Administrateur
Re : Modifier les noms de tables et de colonnes...
Avec pgAdmin ce n'est à priori pas possible, mais avec psql vous pouvez utiliser \gexec (cf https://www.postgresql.org/docs/current/app-psql.html).
Pensez à vérifier les commandes avant quand même, et commencer par un BEGIN;
Julien.
https://rjuju.github.io/
Hors ligne
#12 06/03/2019 16:52:03
- gleu
- Administrateur
Re : Modifier les noms de tables et de colonnes...
Dans pgAdmin, le mieux serait d'utiliser une instruction DO en PL/pgsql.
Guillaume.
Hors ligne
Pages : 1