MySQL 将 csv 字段映射到数据表中的特定字段

MySQL map csv fields to specific fields in datatable

SQL 的新手,并尝试将 CSV 文件加载到我的数据中 table,其中 CSV 中的列与 table 中的相同顺序不匹配。 CSV

中也没有PK

为了说明,这是我的 CSV 片段和 SQL table

csv1、csv2、csv3、csv4...

sql1(PK),sql2,sql3,sql4,sql5...

负载需要这样走

csv1 -> sql2
csv2 -> sql3
csv3 -> sql4

除了用下面的方法实现我想要的,还有什么其他方法吗

load data local infile 'xxx'
into table tbl_x
fields terminated by ','
lines terminated by '\r\n'
ignore 4 lines
(@csv1,@csv2,@csv3,@csv4)
set 
sql2 = @csv1,
sql3 = @csv2,
sql4 = @csv3;

您可以将 CSV 数据加载到临时文件 table,然后将该数据插入到您想要的目标 table。

LOAD DATA LOCAL INFILE 'xxx'
INTO TABLE tbl_temp
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 4 LINES

然后使用INSERT INTO ... SELECT填充tbl_x:

INSERT INTO tbl_x (sql1, sql2, sql3, ...)
SELECT NULL, csv1, csv2, ...
FROM tbl_temp

通过将 NULL 插入主键列,MySQL 应该会自动增加该列。