我有包含ID和大小字段的CSV文件 - ID不在所有行中 - 只是第一个(见下文):
ID1;40
;41
;42
;43
ID2;26
;27
ID3;34
;35
;36
;37
;38
;39
我在MySQL数据库中需要ON DUPLICATE KEY UPDATE记录,有两列 - ID和大小:
ID SIZES
---------------------
ID1 40;41;42;43
ID2 26;27
ID3 34;35;36;37;38;39
一个ID的所有尺寸都在一个值/字段中。
答案 0 :(得分:0)
创建一个将导入数据的表格。
CREATE TABLE my_table (
id VARCHAR(15) NOT NULL,
size INT UNSIGNED NOT NULL,
PRIMARY KEY(id, size)
);
导入数据,使用用户变量处理ID
列的不重复。
SET @old_id := NULL;
LOAD DATA INFILE '/path/to/file.csv'
INTO my_table
FIELDS
TERMINATED BY ';'
(@new_id, size)
SET id = (@old_id := IF(CHAR_LENGTH(TRIM(@new_id))>0, @new_id, @old_id))
;
检索数据,根据需要进行分组。
SELECT id, GROUP_CONCAT(size SEPARATOR ';') AS sizes
FROM my_table
GROUP BY id;