我目前有一个课程表,其布局如下。
course_title, course_subject, course_number, instructor, course_id
我需要创建一个新表,然后推送instructor_id,这样我就可以通过教练的外键ID访问该表,但我不确定如何将课程表中的数据转移到新表,例如讲师,并在课程表中创建讲师 ID 字段。我希望这个问题是有道理的。我正在从 microsoft excel 导入一个平面文件。
我目前有一个课程表,其布局如下。
course_title, course_subject, course_number, instructor, course_id
我需要创建一个新表,然后推送instructor_id,这样我就可以通过教练的外键ID访问该表,但我不确定如何将课程表中的数据转移到新表,例如讲师,并在课程表中创建讲师 ID 字段。我希望这个问题是有道理的。我正在从 microsoft excel 导入一个平面文件。
让我们首先定义输出表的模式。该courses
表应类似于:
title varchar(100) not null
subject varchar(100) not null
[number] varchar(5) not null unique
id long primary key
instructor_id long not null references instructors (id)
instructors
表格应该是:
id autoincrement primary key
[name] varchar(100) not null unique
让我们调用您当前的表courses_old
。我可能会偏离一点,但我相信您可以根据自己的需要进行调整。
所以问题是从courses_old
到courses
和instructors
。首先我们填表instructors
:
insert into instructors ([name])
select distinct instructor
from courses_old
然后我们填写courses
来自以下的匹配讲师instructors
:
insert into courses (
title
, subject
, [number]
, id
, instructor_id
) select
co.course_title
, co.course_subject
, co.course_number
, co.course_id
, i.id
from courses_old as co
inner join instructors as i
on co.instructor = i.[name]
那应该这样做。但显然你需要验证。最后,删除courses_old
表并压缩数据库文件!
或者,courses.id
如果您愿意为他们提供所有新 ID,则可以创建一个自动增量字段。这应该是对上述内容的简单调整。