0

我有带有 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 的所有大小都在一个值/字段中。

4

1 回答 1

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;
    
于 2013-07-15T23:43:10.590 回答