SQL新手,并尝试将CSV文件加载到我的数据表中,其中CSV中的列与表中的相同顺序不匹配。 CSV中也没有PK
来说明这是我的CSV和SQL表格的片段
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;
答案 0 :(得分:0)
您可以将CSV数据加载到临时表中,然后将该数据插入到所需的目标表中。
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应该自动增加该列。