Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL LOAD DATA INFILE com ATUALIZAÇÃO DE CHAVE DUPLICADA


Estas etapas podem ser usadas para emular essa funcionalidade:

  1. Crie uma nova tabela temporária.
    CREATE TEMPORARY TABLE temporary_table LIKE target_table;
    

  2. Opcionalmente, elimine todos os índices da tabela temporária para acelerar as coisas.
    SHOW INDEX FROM temporary_table;
    DROP INDEX `PRIMARY` ON temporary_table;
    DROP INDEX `some_other_index` ON temporary_table;
    

  3. Carregar o CSV na tabela temporária
    LOAD DATA INFILE 'your_file.csv'
    INTO TABLE temporary_table
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (field1, field2);
    

  4. Copie os dados usando ON DUPLICATE KEY UPDATE
    SHOW COLUMNS FROM target_table;
    INSERT INTO target_table
    SELECT * FROM temporary_table
    ON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2);
    

  5. Remova a tabela temporária
    DROP TEMPORARY TABLE temporary_table;
    

Usando SHOW INDEX FROM e SHOW COLUMNS FROM este processo pode ser automatizado para qualquer tabela.