我有带有ID和大小字段的CSV文件-ID不在所有行中-仅在第一行(请参见下文):
ID1;40
;41
;42
;43
ID2;26
;27
ID3;34
;35
;36
;37
;38
;39
我需要在MySQL数据库中具有两列-ID和大小的ON DUPLICATE KEY UPDATE记录:
ID SIZES
---------------------
ID1 40;41;42;43
ID2 26;27
ID3 34;35;36;37;38;39
一个ID的所有大小都在一个值/字段中。
最佳答案
创建一个表,数据将导入其中。
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;
关于mysql - 使用PHP在MySQL中导入CSV文件(更新),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17664476/