перенос данных из mysql в другую базу данных mysql

Есть ли способ передать данные из одной таблицы базы данных mysql и перенести ее в другую таблицу базы данных mysql.

обе эти базы данных mysql - это базы данных joomla, и я хотел бы передать table_users.

Есть ли способ автоматизировать этот процесс, возможно, использовать cronjob.

2 голоса | спросил user2513528 22 Maypm16 2016, 15:26:49

2 ответа


1

Вы можете делиться пользователями с одним Joomla! сайт для нескольких других Joomla! сайтов (пока вы держите их на одной и той же версии J!), просто связывая пользовательские таблицы баз данных. Нет необходимости создавать задания cron или сложные сценарии передачи данных. Кроме того, если вы попытаетесь перенести таблицу table_users, у вас могут возникнуть проблемы на сайте.

Вот как вы это делаете в Joomla! 2.5 - 3.6 (текущая версия):

  1. Выберите «главный» сайт, из которого будут использоваться общие пользователи (это база данных, которая фактически сохранит данные).
  2. Скопируйте значение $secret из configuration.php в тот же файл на всех сайтах «сестра».
  3. Обеспечение доступа к базе данных основного сайта предоставляется пользователям каждой из баз данных сестринских сайтов.
  4. Запустите следующий SQL-скрипт в каждой из баз данных сестринских сайтов:

    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;
    

Примечание 1: Для сценария выше вам необходимо:

  1. Замените dbSite1 с именем базы данных вашего основного сайта.
  2. Заменить josPrefix1 с префиксом таблиц базы данных вашего основного сайта.
  3. Замените josPrefix2 с префиксом таблиц базы данных вашего сайта.

Примечание 2: Если у вас уже есть данные, хранящиеся на одном из сайтов-партнеров, вам может потребоваться обновить идентификатор пользователя из многих записей в базе данных, поскольку идентификаторы пользователя будут изменены. Примеры: автор статьи и измененный пользователь, журналы журнала LogMan и т. Д.


Исходный ответ:

Как разделить таблицу между 2 или более баз данных?

ответил Michael Yaeger 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 19 Sep 2016 23:06:58 +0300 2016, 23:06:58
0

Вы можете просто создать 3 запроса MySql (если это не пользовательские таблицы DB), например

"insert ... select ..."

, поэтому он будет выбирать данные по мере необходимости и вставлять в другую таблицу в 1 транзакцию, поэтому миграция полмиллиона записей будет производиться в течение 20 секунд. Я могу дать вам более конкретные подробности, если вы напишите мне [email protected]

ответил Alexandr 22 Maypm16 2016, 16:40:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132