Перенос из одних полей в другие

Статус
В этой теме нельзя размещать новые ответы.

Rabben

Старатель
Регистрация
26 Мар 2009
Сообщения
159
Реакции
10
Есть 2 таблицы
Код:
CREATE TABLE `ibf_members` (
  `id` mediumint(8) NOT NULL default '0',
  `name` varchar(255) NOT NULL default '',
  `mgroup` smallint(3) NOT NULL default '0',
  `email` varchar(150) NOT NULL default '',
  `joined` int(10) NOT NULL default '0',
  `ip_address` varchar(16) NOT NULL default '',
  `posts` mediumint(7) default '0',
  `title` varchar(64) default NULL,
  `allow_admin_mails` tinyint(1) default NULL,
  `time_offset` varchar(10) default NULL,
  `hide_email` varchar(8) default NULL,
  `email_pm` tinyint(1) default '1',
  `email_full` tinyint(1) default NULL,
  `skin` smallint(5) default NULL,
  `warn_level` int(10) default NULL,
  `warn_lastwarn` int(10) NOT NULL default '0',
  `language` varchar(32) default NULL,
  `last_post` int(10) default NULL,
  `restrict_post` varchar(100) NOT NULL default '0',
  `view_sigs` tinyint(1) default '1',
  `view_img` tinyint(1) default '1',
  `view_avs` tinyint(1) default '1',
  `view_pop` tinyint(1) default '1',
  `bday_day` int(2) default NULL,
  `bday_month` int(2) default NULL,
  `bday_year` int(4) default NULL,
  `new_msg` tinyint(2) default '0',
  `msg_total` smallint(5) default '0',
  `show_popup` tinyint(1) default '0',
  `misc` varchar(128) default NULL,
  `last_visit` int(10) default '0',
  `last_activity` int(10) default '0',
  `dst_in_use` tinyint(1) default '0',
  `view_prefs` varchar(64) default '-1&-1',
  `coppa_user` tinyint(1) default '0',
  `mod_posts` varchar(100) NOT NULL default '0',
  `auto_track` varchar(50) default '0',
  `temp_ban` varchar(100) default '0',
  `sub_end` int(10) NOT NULL default '0',
  `login_anonymous` varchar(3) NOT NULL default '0&0',
  `ignored_users` text,
  `mgroup_others` varchar(255) NOT NULL default '',
  `org_perm_id` varchar(255) NOT NULL default '',
  `member_login_key` varchar(32) NOT NULL default '',
  `member_login_key_expire` int(10) NOT NULL default '0',
  `subs_pkg_chosen` smallint(3) NOT NULL default '0',
  `has_blog` tinyint(1) NOT NULL default '0',
  `members_markers` text,
  `members_editor_choice` varchar(3) NOT NULL default 'std',
  `members_auto_dst` tinyint(1) NOT NULL default '1',
  `members_display_name` varchar(255) NOT NULL default '',
  `members_created_remote` tinyint(1) NOT NULL default '0',
  `members_cache` mediumtext,
  `members_disable_pm` int(1) NOT NULL default '0',
  `members_profile_views` int(10) unsigned NOT NULL default '0',
  `members_l_display_name` varchar(255) NOT NULL default '0',
  `members_l_username` varchar(255) NOT NULL default '0',
  `failed_logins` text,
  `failed_login_count` smallint(3) NOT NULL default '0',
  `has_gallery` int(1) default '0',
  `online` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`),
  KEY `mgroup` (`mgroup`),
  KEY `bday_day` (`bday_day`),
  KEY `bday_month` (`bday_month`),
  KEY `members_l_display_name` (`members_l_display_name`),
  KEY `members_l_username` (`members_l_username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Код:
CREATE TABLE `users` (
  `user_id` int(9) NOT NULL auto_increment,
  `user_level_id` int(9) NOT NULL default '0',
  `user_subnet_id` int(9) NOT NULL default '0',
  `user_profilecat_id` int(9) NOT NULL default '0',
  `user_email` varchar(70) collate utf8_unicode_ci NOT NULL default '',
  `user_newemail` varchar(70) collate utf8_unicode_ci NOT NULL default '',
  `user_fname` varchar(64) collate utf8_unicode_ci NOT NULL default '',
  `user_lname` varchar(64) collate utf8_unicode_ci NOT NULL default '',
  `user_username` varchar(64) collate utf8_unicode_ci NOT NULL default '',
  `user_displayname` varchar(128) collate utf8_unicode_ci default NULL,
  `user_password` varchar(50) collate utf8_unicode_ci NOT NULL default '',
  `user_password_method` tinyint(1) NOT NULL default '0',
  `user_code` varchar(255) collate utf8_unicode_ci NOT NULL default '',
  `user_enabled` int(1) NOT NULL default '0',
  `user_verified` int(1) NOT NULL default '0',
  `user_language_id` int(9) NOT NULL default '0',
  `user_signupdate` int(14) NOT NULL default '0',
  `user_lastlogindate` int(14) NOT NULL default '0',
  `user_lastactive` int(14) NOT NULL default '0',
  `user_ip_signup` varchar(15) collate utf8_unicode_ci NOT NULL default '',
  `user_ip_lastactive` varchar(15) collate utf8_unicode_ci NOT NULL default '',
  `user_status` varchar(190) collate utf8_unicode_ci NOT NULL default '',
  `user_status_date` int(14) NOT NULL default '0',
  `user_logins` int(9) NOT NULL default '0',
  `user_invitesleft` int(3) NOT NULL default '0',
  `user_country` varchar(5) collate utf8_unicode_ci NOT NULL default '',
  `user_timezone` varchar(5) collate utf8_unicode_ci NOT NULL default '',
  `user_dateupdated` int(14) NOT NULL default '0',
  `user_blocklist` text collate utf8_unicode_ci,
  `user_invisible` int(1) NOT NULL default '0',
  `user_saveviews` int(1) NOT NULL default '0',
  `user_photo` varchar(10) collate utf8_unicode_ci NOT NULL default '',
  `user_search` int(1) NOT NULL default '0',
  `user_privacy` int(2) NOT NULL default '0',
  `user_comments` int(2) NOT NULL default '0',
  `user_hasnotifys` tinyint(1) NOT NULL default '0',
  `user_profile_album` enum('tab','side') collate utf8_unicode_ci NOT NULL default 'tab',
  `user_userpoints_allowed` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`user_id`),
  UNIQUE KEY `user_username` (`user_username`),
  UNIQUE KEY `user_email` (`user_email`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Как правильно сделать запрос/скрипт для переноса информации из одних полей в другие?
Нужно перенести из:
ibf_members.id в users.user_id,
ibf_members.email в users.user_email и users.user_newemail,
ibf_members.name в users.username.
А все остальные поля должны стать по стандарту.
 
ну самый простой путь это сделать экспорт данных вместе со структурой, потом немного поправить заголовок структуры и сделать обратный импорт с пересозданием второй таблицы
 
хз. имхо проще пхп скриптик написать где он в цикле будет брать нужные значения из базы и подставлять куда надо. Со структурой слишком сложно.
 
Код:
INSERT INTO users (user_id, user_email, user_newemail, user_username) 
SELECT id, email, email, name
FROM ibf_members
или добавить новые
Код:
INSERT INTO users (user_id, user_email, user_newemail, user_username) 
SELECT i.id, i.email, i.email, i.name
FROM ibf_members i
LEFT JOIN users u ON u.user_id=i.id
WHERE u.user_id IS NULL

у user_username, user_email должны быть уникальные значения, поэтому могут быть проблемы
 
  • Заблокирован
  • #5
Я бы тоже вручную делал через экспорт-импорт sql
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху