问题描述
表1-学生
- id(主键)(INT)
- 名称(VARCHAR)
- gender_id(外键)(INT)
表2-性别
- gender_id(主键)(INT)
- 性别(VARCHAR)
我要导入包含以下内容的csv:
id,name,gender
1,Sheetal,female
2,Reshma,female
3,Kamal,male
4,Roma,female
5,Raman,male
我尝试查询的是:
LOAD DATA LOCAL INFILE 'C:\Users\USER\Desktop\students.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
LInes TERMINATED BY '\r\n'
INSERT INTO students(students.id,students.name,gender.gender)
SELECT FROM students
LEFT JOIN gender
ON(students.gender_id=gender.gender_id);
解决方法
您可以交换csv文件中的数据并将其替换为性别表中的gender_id
LOAD DATA LOCAL INFILE 'C:\Users\USER\Desktop\students.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id,name,@gender)
SET gender_id = (SELECT gender_id FROM gender WHERE gender = @gender)
但是您的第一行对我不起作用
我将其替换为
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/students.csv'