我目前有一个课程表,其布局如下所示。
course_title, course_subject, course_number, instructor, course_id
我需要创建一个新表,然后推送instructor_id,这样我就可以通过外键ID来访问表了,但是我不确定如何从课程表中获取数据转到诸如讲师之类的新表,并在课程表中创建instructor_id字段。我希望这个问题有道理。我正在从microsoft excel导入一个平面文件。
答案 0 :(得分:1)
让我们首先定义输出表的模式。 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
表并压缩DB文件!
如果您愿意为他们提供所有新ID,则可以选择将courses.id
设为自动增量字段。这应该是对上述内容的简单调整。