我有下表:
CREATE TABLE Student (
SID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(100) NOT NULL,
Telephone VARCHAR(20) NOT NULL,
Age INT UNSIGNED NOT NULL,
CONSTRAINT UC_Person UNIQUE (SID, Name)
);
CREATE TABLE Course (
CourseNo VARCHAR(10) NOT NULL PRIMARY KEY,
Title VARCHAR(150) NOT NULL,
Department VARCHAR(60) NOT NULL,
NumberOfCredits VARCHAR(20) NOT NULL,
CourseFees FLOAT NOT NULL,
CONSTRAINT UC_Course UNIQUE (CourseNo,Title)
);
CREATE TABLE Registration (
SID INT UNSIGNED NOT NULL,
CourseNo VARCHAR(10) NOT NULL,
StartDate DATE NOT NULL,
CompleteDate DATE NULL,
Grade FLOAT NULL,
FOREIGN KEY (SID) REFERENCES Student(SID),
FOREIGN KEY (CourseNo) REFERENCES Course(CourseNo)
);
我已经分别用825 CourseNo和1000 SID填充了Course
和Student
表。
我知道如何向表中输入数据的唯一方法是:
INSERT INTO REGISTRATION ('SID','CourseNo','StartDate','CompleteDate','Grade') VALUES
('3', 'COMP418', '2018-09-01', NULL, NULL),
('3', 'COMP470', '2018-09-01', NULL, NULL),
('3', 'COMP314', '2018-05-01', '2018-08-31', '85.67');
这有效,但是,我有一个x8课程编号,x2 StartDate,x2 CompleteDate,x8成绩,可以按每个SID输入。在我的数据库中,如果SID为1000,这将永久占用我上面的示例。我敢肯定有一种更快的方法,但是我不知道怎么做。
有人可以解释一下吗?
答案 0 :(得分:0)
MySQL提供了LOAD DATA INFILE
命令,HeidiSQL和Mysqlworkbench之类的工具具有导入.csv文件的功能。作为起点,您需要一个平面文件,在数据列之间具有某种分隔符。
与一堆INSERT查询相比,这种加载数据的方式几乎快得惊人。