在两个表中同时通过联接表中的CSV文件在MySQL中导入数据

问题描述

我想在MysqL数据库的2个联接表中导入数据。

表1-学生

  1. id(主键)(INT)
  2. 名称(VARCHAR)
  3. gender_id(外键)(INT)

表2-性别

  1. gender_id(主键)(INT)
  2. 性别(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'