Есть ли лучший способ для массового ввода? - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть следующие таблицы:

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)
);

Я заполнил таблицы Course и Student, 825 CourseNo и 1000 SID соответственно.

Единственный способ, которым я знаю, как ввести данные в таблицу:

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 CourseNo, x2 StartDate, x2 CompleteDate, x8 Grade, чтобывведите для SID.С 1000 SID в моей базе данных это будет длиться вечно, используя мой пример выше.Я уверен, что есть более быстрый путь, но я понятия не имею, как.

Может кто-нибудь объяснить, как?

1 Ответ

0 голосов
/ 05 января 2019

MySQL предлагает команду LOAD DATA INFILE, а такие инструменты, как HeidiSQL и Mysqlworkbench, имеют функции для импорта файлов .csv.В качестве отправной точки вам нужен плоский файл с каким-то разделителем между столбцами данных.

Этот способ загрузки данных почти удивительно быстр по сравнению с беспорядком запросов INSERT.

...