•  
  • Archives for avril 2011 (3)

Migration Mysql -> Postrgesql (modif casse suite)

Categories: Postgresql
Comments: No Comments
Published on: 30 avril 2011

Bonjour,

Les tables sont renommées mais ça reste le plus facile.
Il faut maintenant mettre en minuscule toutes les colonnes de toutes les tables et de tous les schémas.
La requête reste assez semblable à la première elle est juste plus longue.
Voici donc la bête :

SELECT 'ALTER TABLE ' || quote_ident(c.table_schema) || '.' || quote_ident(c.table_name) ||
' RENAME "' || c.column_name || '" TO ' || quote_ident(lower(c.column_name)) || ';' As ddlsql
FROM information_schema.columns As c
WHERE c.table_schema NOT IN('information_schema', 'pg_catalog')
AND c.column_name <> lower(c.column_name)
ORDER BY c.table_schema, c.table_name, c.column_name;

Vous remarquerez que je n’ai pas utilisé du tout la même façon que pour les tables ! et la raison est très simple celui ci n’est pas de moi :o
Je l’ai trouvé sur le net, mais depuis impossible de retrouver le site web du détenteur ce qui est assez dommage car son site avait l’air d’être une mine d’or :( donc si quelqu’un le trouve je le mettrais en lien.

Cette requête fonctionne à merveille :) merci à lui qui m’a fait gagner beaucoup de temps.

Migration Mysql -> Postgresql (modif de casse)

Categories: Postgresql
Comments: No Comments
Published on: 29 avril 2011

Bonjour,

Premier problème que je viens de rencontrer, toutes les bases étaient nommées en majuscule-minuscule et pareil pour les colonnes :D
Problème ? oui…
La commande

SELECT * FROM LL_Admin;

est interprétée sous pgsql par

SELECT * FROM ll_admin;

alors que la base est écrite pour lui LL_Admin…
En gros il vous sortira que la base n’existe pas tout simplement.
Il y a donc 2 solutions mettre des guillemets

SELECT * FROM "LL_Admin";

il comprendra qu’il doit faire attention à la casse.
Ou alors passer toutes les bases en minuscule pour pas à se soucier de la casse.
J’ ai biensur choisi la seconde solution, pourquoi ? car je me voyais mal demander au développeur de changer toutes ses requêtes :o
Donc mon but était de trouver une requete sql qui me changerait toutes bases en une fois et sans en oublier une seule !
Avec l’aide d’un bouquin je m’en suis sortie et voici la requete en question :

SELECT 'ALTER TABLE ' || n.nspname || '.' || quote_ident(c.relname) || ' RENAME TO ' || quote_ident(LOWER(c.relname)) || ';'
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE n.nspname NOT IN('information_schema', 'pg_catalog','pg_toast') AND c.relname <> lower(c.relname);

Quelques explications sur ce que je fais, c’est donc un Concat, le but est de ramener toutes les tables de la base, donc il faut aller taper dans les tables systèmes pg_class, ma recherche se limite aux tables commençant par table.
J’utilise le fonction lower pour tout remettre en minuscule cette fonction est super simple, exemple :
Le Quote_ident qui s’applique a c.relname obligatoire biensur ( rajout de guillemets )
La comparaison de fin pour ne prendre que les tables ayant des caractères majuscules.

SELECT lower(TEST)
Résultat : test

Plus qu’a mettre le resultat dans un fichier et le lancer ^^

Migration Mysql -> Postgresql (intro)

Categories: Postgresql
Comments: No Comments
Published on: 29 avril 2011

Bonjour,

Je dois faire une migration d’un serveur mysql vers postgresql.
Je vous mettrais ici à quoi je me suis confronté et comment j’ai résolu mes divers problèmes.
N’ayant pas terminé ma migration mes soucis et solutions viendront post par post :)

La migration c’est quoi : 50 bases de 60 tables chacune à migrer vers une database postgresql.
Donc en gros prendre mes 50 bases pour les mettre dans une base de 50 schémas. ^^
Bon en fait c’est super simple quand on a l’outil adéquat, j’ai pour cela utilisé l’ utilitaire fait par EntrepriseDB.
On va parler tout de suite de cet utilitaire, il est très bien mais pleins d’options manquent à l’appel… mais bon ça laisse un peu de boulot comme ça :p
Pour commencer il m’a bien mis de suite les 50 bases dans une seule postgresql en les « transformant » en schémas :)
Petit truc que j’aurais aimé c’est de pouvoir faire cette migration à partir d’un dump hors l’utilitaire ne sait pas faire, il doit se connecter au serveur mysql pour migrer dans le postgresql.
Après cette migration j’ai pu constater les « dégâts » dans le log de migration.

page 1 of 1

Welcome , today is Dimanche, 20 août 2017