我有带有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/

10-15 18:30