You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将含5列的CSV导入MySQL 8.3三张表:列映射问题求助

MySQL 8.3 导入CSV到多张表的正确LOAD DATA配置

核心说明

你的CSV列顺序固定为:col1, col2, col3, date, source(共5列),下面针对三张表分别给出正确的LOAD DATA INFILE命令,解决字段映射问题:


1. 导入到Table1

Table1仅需将CSV的第5列(source)映射到src字段,若ID为自增主键,MySQL会自动生成:

LOAD DATA INFILE '/var/lib/mysql-files/testTripsForDB.csv'
INTO TABLE Table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS -- 跳过CSV表头
(@dummy, @dummy, @dummy, @dummy, src); -- 前4列用@dummy忽略,第5列直接映射到src

2. 导入到Table2

Table2需将CSV的第4列(date)映射到DateCollected字段,coll字段若未指定CSV对应列,默认留空(若表结构设置了默认值会自动填充):

LOAD DATA INFILE '/var/lib/mysql-files/testTripsForDB.csv'
INTO TABLE Table2
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@dummy, @dummy, @dummy, DateCollected, @dummy); -- 第4列映射到DateCollected,其余列忽略

3. 导入到Table3(重点:字段顺序不匹配)

Table3的字段与CSV列对应关系为:column1=col1、column3=col2、column2=col3,有两种简洁写法:

写法一:直接指定CSV列对应表字段(推荐)

括号内的顺序对应CSV列的顺序,每个位置填写要映射的Table3字段名,无需SET:

LOAD DATA INFILE '/var/lib/mysql-files/testTripsForDB.csv'
INTO TABLE Table3
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(column1, column3, column2, @dummy, @dummy); -- CSV第1列→column1,第2→column3,第3→column2

写法二:用临时变量接收后映射

先将CSV列读入临时变量,再通过SET赋值给表字段:

LOAD DATA INFILE '/var/lib/mysql-files/testTripsForDB.csv'
INTO TABLE Table3
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@csv_col1, @csv_col2, @csv_col3, @dummy, @dummy) -- 读取前3列到临时变量
SET column1 = @csv_col1, column3 = @csv_col2, column2 = @csv_col3; -- 映射到对应字段

你之前代码的问题说明

  • Table3的尝试代码混淆了变量和字段名,SET逻辑错误,未正确对应CSV列与表字段。
  • IGNORE 1 ROWS后的括号,本质是按CSV列的顺序,指定每一列要映射到的表字段名,或用@xxx临时变量接收,无需的列用@dummy忽略即可。

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:55:22