web-dev-qa-db-fra.com

portage des données de mysql vers une autre base de données mysql

Est-il possible de porter des données d'une table de base de données mysql et de les transférer vers une autre table de base de données mysql?.

ces deux bases de données mysql sont des bases de données joomla, et j'aimerais transférer table_users.

Y at-il un moyen que je peux automatiser ce processus, peut-être utiliser un cronjob.

2
user2513528

Vous pouvez partager les utilisateurs d'un seul Joomla! site à plusieurs autres Joomla! sites (tant que vous les conservez sur la même version de J!) en liant simplement les tables utilisateur des bases de données. Il n'est pas nécessaire de créer des tâches cron ou des scripts de transfert de données complexes. De plus, si vous essayez uniquement de transférer le table_users _ table, vous pourriez avoir des problèmes avec le site.

Voici comment vous le faites dans Joomla! 2.5 - 3.6 (version actuelle):

  1. Choisissez le site "maître" à partir duquel les utilisateurs seront partagés (c'est la base de données qui stockera les données).
  2. Copiez le $secret valeur du site principal configuration.php fichier dans le même fichier sur tous les sites "soeurs".
  3. Assurez-vous que les utilisateurs de chacune des bases de données du site partenaire ont accès à la base de données du site maître.
  4. Exécutez le script SQL suivant sur chacune des bases de données des sites soeurs:

    RENAME TABLE `josPrefix2_users` TO `josPrefix2_bak_users`;
    RENAME TABLE `josPrefix2_session` TO `josPrefix2_bak_session`;
    RENAME TABLE `josPrefix2_usergroups` TO `josPrefix2_bak_usergroups`;
    RENAME TABLE `josPrefix2_user_notes` TO `josPrefix2_bak_user_notes`;
    RENAME TABLE `josPrefix2_user_profiles` TO `josPrefix2_bak_user_profiles`;
    RENAME TABLE `josPrefix2_user_usergroup_map` TO `josPrefix2_bak_user_usergroup_map`;
    RENAME TABLE `josPrefix2_viewlevels` TO `josPrefix2_bak_viewlevels`;
    
    CREATE VIEW josPrefix2_users AS SELECT * FROM dbSite1.josPrefix1_users;
    CREATE VIEW josPrefix2_session AS SELECT * FROM dbSite1.josPrefix1_session;
    CREATE VIEW josPrefix2_usergroups AS SELECT * FROM dbSite1.josPrefix1_usergroups;
    CREATE VIEW josPrefix2_user_notes AS SELECT * FROM dbSite1.josPrefix1_user_notes;
    CREATE VIEW josPrefix2_user_profiles AS SELECT * FROM dbSite1.josPrefix1_user_profiles;
    CREATE VIEW josPrefix2_user_usergroup_map AS SELECT * FROM dbSite1.josPrefix1_user_usergroup_map;
    CREATE VIEW josPrefix2_viewlevels AS SELECT * FROM dbSite1.josPrefix1_viewlevels;
    

Remarque 1: Pour le script ci-dessus, vous devez:

  1. Remplacer dbSite1 avec le nom de la base de données de votre site maître.
  2. Remplacer josPrefix1 avec le préfixe des tables de base de données de votre site maître.
  3. Remplacer josPrefix2 avec le préfixe des tables de base de données de votre site partenaire.

Remarque 2: Si des données sont déjà stockées sur l'un des sites soeurs, vous devrez peut-être mettre à jour l'ID utilisateur de nombreuses entrées de la base de données. Les identifiants d'utilisateur auront changé. Exemples: auteur de l'article et utilisateur modifié, journaux d'accès LogMan, etc.


Réponse originale:

Comment partager une table entre 2 ou plusieurs bases de données?

1
Michael Yaeger

Vous pouvez simplement créer 3 requêtes MySql (s'il ne s'agit pas de tables de base de données personnalisées) comme

"insérer ... sélectionnez ..."

ainsi, il sélectionnera les données selon vos besoins et les insérera dans une autre table en une seule transaction. La migration d'un demi-million d'enregistrements s'effectuera en 20 secondes maximum. Je peux vous donner plus de détails si vous m'envoyez un e-mail à [email protected]

0
Alexandr