On Sun, 24 Nov 2002, Yann Forget wrote: > Je cherche un script pour convertir une base MySQL en PostgreSQL et > vice-versa. Quelqu'un aurait-il ça sous la main, ou saurait-il où je peux le > trouver ?
Elle est complexe cette base ? La dernière fois que j'ai fait ça, j'ai re-créé et re-réfléchi les structures de données, car vu le peu de choses que MySQL supporte et la façon dont certaines choses sont implémentées on a vite mal à la tête. Par contre, les données MySQL, on peut les importer assez facilement dans PostgreSQL, avec juste quelques bémols sur l'échappement des guillemets, et éventuellement via une VIEW et une RULE pour assurer l'intégrité ou des conversions directement dans la base de données. Mes différentes rencontres avec MySQL ont été assez mauvaises: chez un client, j'ai déjà vu des bases avec des identifiants uniques mais des tuples multiples: la base de données avait dû se corrompre d'une manière où d'une autre. Chez un autre client, même `mysqldump' refuse en ce moment de sauvegarder en raison d'incohérences. Et le dump généré en excluant les tables problématiques n'est pas restorable: la solution trouvée est de sauvegarder directement de /var/lib/mysql, mais sur un MySQL stoppé sur un slave répliqué (et il m'a fallu écrire un script de redémarrage de surveillance et redémarrage de la synchronisation car elle s'arrête de temps en temps). Plus je joue avec MySQL plus je vois que c'est un simple jouet: rapide pour faire des requêtes simples en lecture, et c'est tout. Mais bon ça c'est de la politique, il y a plein d'applications où MySQL peut probablement rendre service et où son support partiel peut suffire. Une conversion PostgreSQL -> MySQL réellement automatique est impossible dans l'état actuel, sauf si l'on utilise ni procédure stockées, ni triggers, ni règles, ni contraintes d'intégrité non minimalistes, ni view, ni select imbriqué, ni transaction sérialisées, etc. En bref, moi je ne vois pas comment construire quoi que ce soit de solide avec MySQL: mais bon, il est vrai que j'ai une vision assez spéciale de l'informatique, dans laquelle on passe par diverses phases de conception avant de créer une structure SQL, et dans laquelle on déplace une grande partie du traitement (validation) dans la base de données plutôt que dans un programme C, Perl, C++ ou PHP: cette vision ne semble pas être très répandue. Mais regarde quand même: http://webmasterbase.com/article/529 -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.