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

使用PHP在MySQL中导入CSV文件(更新),mysql,csv,Mysql,Csv,我有一个带有ID和大小字段的CSV文件-ID不在所有行中-仅在第一行(见下文): 我需要在MySQL数据库中使用两列重复的密钥更新记录-ID和大小: 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,

我有一个带有ID和大小字段的CSV文件-ID不在所有行中-仅在第一行(见下文):

我需要在MySQL数据库中使用两列重复的密钥更新记录-ID和大小:

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;
    
  • SELECT   id, GROUP_CONCAT(size SEPARATOR ';') AS sizes
    FROM     my_table
    GROUP BY id;