根据旧数据库,我有一个名为guardiant的表,它有一个名为db_id的外键(来自student表)。表结构如下:
CREATE TABLE IF NOT EXISTS `guardiant` (
`db_id` varchar(100) NOT NULL,
`fg_name` varchar(100) DEFAULT NULL,
`fg_address` varchar(100) DEFAULT NULL,
`fg_tel_work` varchar(100) DEFAULT NULL,
`fg_mobile` varchar(100) DEFAULT NULL,
`fg_email` varchar(100) DEFAULT NULL,
`fg_prof` varchar(100) DEFAULT NULL,
`mg_name` varchar(100) DEFAULT NULL,
`mg_address` varchar(100) DEFAULT NULL,
`mg_tel_work` varchar(100) DEFAULT NULL,
`mg_mobile` varchar(100) DEFAULT NULL,
`mg_email` varchar(100) DEFAULT NULL,
`mg_prof` varchar(100) DEFAULT NULL,
`by` varchar(100) DEFAULT NULL,
PRIMARY KEY (`db_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
此表包含母亲和父亲的记录(父亲是fg_,母亲是mg_)。我需要将数据迁移到另一个只能包含母亲或父亲的表中。结构类似于:
CREATE TABLE IF NOT EXISTS `fsms_parent_guardian` (
`parent_guardian_id` varchar(20) NOT NULL,
`address_1` varchar(200) default NULL,
`address_2` varchar(200) default NULL,
`date_of_birth` date default NULL,
`description` varchar(250) default NULL,
`education` varchar(100) default NULL,
`email` varchar(100) default NULL,
`first_name` varchar(100) NOT NULL,
`last_name` varchar(100) NOT NULL,
`middle_name` varchar(100) default NULL,
`modified_by` varchar(20) NOT NULL,
`modified_date` date NOT NULL,
`nationality` varchar(20) default NULL,
`profession` varchar(50) default NULL,
PRIMARY KEY (`parent_guardian_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
因此,旧表中的一条记录应该分成两个具有单独ID的新表的记录。 fsms_parent_guardian表和学生表的主键也应该映射到一个单独的表中。请告诉我一个可行的方法来解决这个问题。
答案 0 :(得分:0)
要复制记录,您需要两个查询,第一个选择fg记录并将它们插入新表中,第二个选择mg记录并再次插入。每个fg和mg记录需要使用外键(ID_student)映射到学生表。