是否有更好的批量输入方法?

时间:2018-12-23 08:43:58

标签: mysql-8.0

我有下表:

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填充了CourseStudent表。

我知道如何向表中输入数据的唯一方法是:

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,这将永久占用我上面的示例。我敢肯定有一种更快的方法,但是我不知道怎么做。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

MySQL提供了LOAD DATA INFILE命令,HeidiSQL和Mysqlworkbench之类的工具具有导入.csv文件的功能。作为起点,您需要一个平面文件,在数据列之间具有某种分隔符。

与一堆INSERT查询相比,这种加载数据的方式几乎快得惊人。