使用PHP在MySQL(更新)中导入CSV文件

时间:2013-07-15 21:42:49

标签: mysql csv

我有包含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的所有尺寸都在一个值/字段中。

1 个答案:

答案 0 :(得分:0)

  1. 创建一个将导入数据的表格。

    CREATE TABLE my_table (
      id   VARCHAR(15)  NOT NULL,
      size INT UNSIGNED NOT NULL,
      PRIMARY KEY(id, size)
    );
    
  2. 导入数据,使用用户变量处理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))
    ;
    
  3. 检索数据,根据需要进行分组。

    SELECT   id, GROUP_CONCAT(size SEPARATOR ';') AS sizes
    FROM     my_table
    GROUP BY id;