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 应该会自动增加该列。
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 应该会自动增加该列。