Existe-t-il un outil en ligne de commande pour convertir la base de données MySQL en PostgreSQL? Je voudrais également savoir s'il existe un moyen de convertir la base de données à l'aide de la mysqldump
commande normale .
Existe-t-il un outil en ligne de commande pour convertir la base de données MySQL en PostgreSQL? Je voudrais également savoir s'il existe un moyen de convertir la base de données à l'aide de la mysqldump
commande normale .
Réponses:
as-tu essayé:
mysqldump --compatible=postgresql dbname > export.sql
puis faites cela pour échapper aux citations
sed "s/\\\'/\'\'/g" export.sql > export1.sql
peut nécessiter un peu plus de massage, alors regardez de plus près doco mysqldump.
mysqldump
encore fixé . syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Voici quelques outils open source, qui peuvent être très utiles:
FromMySqlToPostgreSql
est un outil de portée de fonctionnalité et très facile à utiliser.
Il mappe les types de données, migre les contraintes, les index, les PK et les FK exactement comme ils l'étaient dans votre base de données MySQL.
Sous le capot, il utilise PostgreSQL COPY, donc le transfert de données est très rapide.
FromMySqlToPostgreSql écrit en PHP (> = 5.4).
pgloader est un outil de chargement de données pour PostgreSQL, utilisant la commande COPY. Son principal avantage par rapport à la simple utilisation
COPY
ou \copy
, et plus d'utiliser un wrapper de données étrangères, est son comportement de transaction, où pgloader conservera un fichier séparé de données rejetées, mais continuera d'essayer de copier les bonnes données dans votre base de données. Le comportement par défaut de PostgreSQL est transactionnel, ce qui signifie que toute ligne erronée dans les données d'entrée (fichier ou base de données distante) arrêtera le chargement en bloc complet de la table. pgloader implémente également le reformatage des données, un exemple typique de cela étant la transformation des horodatages MySQL 0000-00-00 et 0000-00-00 00:00:00 en PostgreSQLNULL
valeur (parce que notre calendrier n'a jamais eu d'année zéro).
Il existe en fait un outil de migration gratuit assez facile à utiliser, développé par EnterpriseDB lui-même. Il peut être installé via StackBuilder: Migration Toolkit
J'ai récemment utilisé un outil non gratuit de DBConvert pour convertir une base de données d'accès en postgres, et j'ai trouvé que cela en valait la peine par rapport au temps que j'ai perdu à essayer de le faire de manière fiable et gratuite. Vendre un outil similaire pour les postgres MySQL <-> , que je n'ai pas utilisé, mais qui pourrait valoir la peine d'être envisagé, sauf si vous n'êtes intéressé que par les outils de ligne de commande.
Dans le cas où vous vous demandez que je ne suis pas affilié à eux en aucune façon :-)
Vous pouvez utiliser l'assistant de migration EnterpriseDB, par exemple.
Il peut facilement migrer OracleDB. Mais pour Mysql, il a certaines limitations, par exemple, il ne prend pas en charge les vues, les déclencheurs, les procédures stockées.
Pour plus d'informations, voir EDB Migration Toolkit . Pas sûr, mais il peut être possible de migrer mysql-> oracle-> postgresql en sauvegardant vos procédures stockées (si elles existent).
Grep this: Base de données et outils de migration SQL
C'est juste pour compléter les réponses existantes, ce qui m'a aidé à trouver cette solution. J'ai utilisé FromMySqlToPostgreSql . Tout ce que vous devez faire est de télécharger et d'extraire FromMySqlToPostgreSql , de faire une copie de l'exemple de fichier de configuration, de définir les valeurs de connexion db et d'exécuter le fichier d'index avec la commande suivante:
php index.php config.xml
Simple mais efficace!
Il existe un outil open source qui fournit des fonctionnalités pour convertir une base de données MySQL en base de données Postgresql, y compris les index, les fks et les données.
https://github.com/ggarri/mysql2psql
Cet outil permet également de définir des modifications de schéma afin que vous puissiez effectuer certaines mises à niveau de votre schéma actuel lors de l'exécution.