30,997
edits
PolyglotBot (talk | contribs) m (Import interlang links (links to translated versions of this page in other languages) from origin English page "FAQ_Migrate_my_Mysql_database_to_PostgreSQL".) |
mNo edit summary Tag: 2017 source edit |
||
| Line 63: | Line 63: | ||
=== Importer la sauvegarde MySql === | === Importer la sauvegarde MySql === | ||
* Modifier la configuration de postgresql afin d'accepter temporairement la syntaxe du fichier issu du dump mysql en plaçant la directive escape_string_warning à off dans le fichier '''postgresql.conf''' | * Modifier la configuration de postgresql afin d'accepter temporairement la syntaxe du fichier issu du dump mysql en plaçant la directive escape_string_warning à off dans le fichier '''postgresql.conf''' | ||
< | <syntaxHighlight lang="ini"> | ||
escape_string_warning = off | escape_string_warning = off | ||
</ | </syntaxHighlight> | ||
Redémarrer le serveur. | Redémarrer le serveur. | ||
* Désactiver les contraintes pour permettre l'import. Pour cela, se connecter à la base et exécuter la procédure stockée dol_util_triggerall qui a été installé avec Dolibarr avec la paramètre à off: | * Désactiver les contraintes pour permettre l'import. Pour cela, se connecter à la base et exécuter la procédure stockée dol_util_triggerall qui a été installé avec Dolibarr avec la paramètre à off: | ||
< | <syntaxHighlight lang="sql"> | ||
psql -h name_or_ip_of_postgresql_server -d name_database_postgresql -U login_database_mysql | psql -h name_or_ip_of_postgresql_server -d name_database_postgresql -U login_database_mysql | ||
> select dol_util_triggerall(false); | > select dol_util_triggerall(false); | ||
CTRL+D | CTRL+D | ||
</ | </syntaxHighlight> | ||
* Modifier le fichier généré dans la phase export afin de mettre les bons échappements sur les chaines: | * Modifier le fichier généré dans la phase export afin de mettre les bons échappements sur les chaines: | ||
< | <syntaxHighlight lang="bash"> | ||
cd /tmp | cd /tmp | ||
sed -e "s/\\\'/\'\'/g" mysqldump_mydatabase_version_date.sql > mysqldump_readyforpgsql.sql | sed -e "s/\\\'/\'\'/g" mysqldump_mydatabase_version_date.sql > mysqldump_readyforpgsql.sql | ||
</ | </syntaxHighlight> | ||
* Après avoir convertit le fichier, importer le sur votre base postgresql vierge: | * Après avoir convertit le fichier, importer le sur votre base postgresql vierge: | ||
< | <syntaxHighlight lang="bash"> | ||
psql -h nom_ou_ip_du_serveur_postgresql -d nom_base_postgresql -U login_base_mysql -f mysqldump_readyforpgsql.sql >resimport.sql 2>&1 | psql -h nom_ou_ip_du_serveur_postgresql -d nom_base_postgresql -U login_base_mysql -f mysqldump_readyforpgsql.sql >resimport.sql 2>&1 | ||
</ | </syntaxHighlight> | ||
Jeter un oeil au fichier sortie resimport.log. Si la structure de la base Postgresql correspond bien à la structure de la base Mysql (pas de table ni de champs en moins), vous ne devriez pas avoir d'erreur. | Jeter un oeil au fichier sortie resimport.log. Si la structure de la base Postgresql correspond bien à la structure de la base Mysql (pas de table ni de champs en moins), vous ne devriez pas avoir d'erreur. | ||
Si vous en avez, reportez le sur le forum dolibarr. | Si vous en avez, reportez le sur le forum dolibarr. | ||
Noter que vous pouvez réexécuter cette commande d'import après des corrections manuelles de la structure de la base d'accueil. C'est sans risque car toutes les tables Dolibarr sont protégées par une contraintes "clé unique". Aussi si vous réalisez cela, vous aurez juste des erreurs de type "clé dupliquée", que vous pouvez ignorer. Ne faites attention qu'aux autres erreurs. | Noter que vous pouvez réexécuter cette commande d'import après des corrections manuelles de la structure de la base d'accueil. C'est sans risque car toutes les tables Dolibarr sont protégées par une contraintes "clé unique". Aussi si vous réalisez cela, vous aurez juste des erreurs de type "clé dupliquée", que vous pouvez ignorer. Ne faites attention qu'aux autres erreurs. | ||
* Une fois l'import terminé, il est nécessaire de réactiver les contraintes et mettre à jour les séquences pour correspondre aux nouvelles valeures | * Une fois l'import terminé, il est nécessaire de réactiver les contraintes et mettre à jour les séquences pour correspondre aux nouvelles valeures | ||
< | <syntaxHighlight lang="sql"> | ||
psql -h name_or_ip_of_postgresql_server -d name_database_postgresql -U login_database_mysql | psql -h name_or_ip_of_postgresql_server -d name_database_postgresql -U login_database_mysql | ||
> select dol_util_triggerall(true); | > select dol_util_triggerall(true); | ||
> select dol_util_rebuild_sequences(); | > select dol_util_rebuild_sequences(); | ||
CTRL+D | CTRL+D | ||
</ | </syntaxHighlight> | ||
Vous pouvez aussi restaurer le fichier postgresql.conf à sa valeur initiale. | Vous pouvez aussi restaurer le fichier postgresql.conf à sa valeur initiale. | ||
< | <syntaxHighlight lang="ini"> | ||
escape_string_warning = on | escape_string_warning = on | ||
</ | </syntaxHighlight> | ||