•  
  • Archives for mysql (4)

Postgresql dans le Lion d’ Apple

Categories: Postgresql
Comments: No Comments
Published on: 26 juillet 2011

Bonjour,

Et voilà une petite nouvelle passée (je trouve) un peu à la trappe :p
La version serveur de du dernier OS d’ Apple, le Mac OS/X Server ( nom de code Lion ) aura désormais par défaut la base de donnée Postgresql d’installée ! et non Mysql.
Version à priori officiel, Postgresql serait plus puissant ( j’ai quelques doutes vu les besoins de macosx ( surtout du site ultra light style wordpress(du riche..) )), mon interprétation une affaire de licensing…

Après moi je m’en fou, plus y a de postgresql mieux c’est :D

Migration Mysql -> Postgresql (Fonctions)

Bonjour à tous,

Bon on va être honnête passer sur postgres c’est bien plus long quand on a une bonne grosse application qui tourne déjà :p .

On s’est rendu compte que nous utilisions beaucoup de fonctions mysql comme ifnull, curdate,insert,… et fatalement ça ne pouvait pas marcher en l’état…
Donc 2 possibilités s’offrent à nous, soit on recode tout soit on se demande si quelqu’un n’a pas été confronté à ce problème et c’est donc taper toutes les fonctions mysql en postgresql.
Tant qu’a faire autant chercher avant ^^
Et bingo, une personne fort bien intentionnée a réécris énormément de fonction mysql, plus d’une centaine :o
Voici un petit aperçu de la liste en question :

  • timediff, sysdate, subdate, space, rand, make_set, last_day, ifnull, dayname, datediff, curtime, curdate, insert,…
  • L’intérêt à mon sens n’est pas de garder ces fonctions ad vitam eternam, mais plutôt d’ accélérer la migration.
    Pour télécharger ce joyaux il suffit d’aller sur le pgfoundry ici
    Le projet n’a plus bougé depuis 2005 mais en tout cas les fonctions que j’ai pris sont toujours valide sur du postgresql 9.0.

    Merci à ce dev

    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 Lundi, 20 mai 2013