Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL LOAD DATA INFILE mit ON DUPLICATE KEY UPDATE

Mit diesen Schritten kann diese Funktionalität emuliert werden:

  1. Erstellen Sie eine neue temporäre Tabelle.

    CREATE TEMPORARY TABLE temporary_table LIKE target_table;
    
  2. Optional können Sie alle Indizes aus der temporären Tabelle löschen, um die Dinge zu beschleunigen.

    SHOW INDEX FROM temporary_table;
    DROP INDEX `PRIMARY` ON temporary_table;
    DROP INDEX `some_other_index` ON temporary_table;
    
  3. Laden Sie die CSV-Datei in die temporäre Tabelle

    LOAD DATA INFILE 'your_file.csv'
    INTO TABLE temporary_table
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (field1, field2);
    
  4. Kopieren Sie die Daten mit 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. Entfernen Sie die temporäre Tabelle

    DROP TEMPORARY TABLE temporary_table;
    

Verwenden von SHOW INDEX FROM und SHOW COLUMNS FROM dieser Prozess kann für jede gegebene Tabelle automatisiert werden.