sql >> Database >  >> RDS >> Mysql

MySQL LADEN DATA INFILE met ON DUPLICATE KEY UPDATE

Deze stappen kunnen worden gebruikt om deze functionaliteit te emuleren:

  1. Maak een nieuwe tijdelijke tabel.

    CREATE TEMPORARY TABLE temporary_table LIKE target_table;
    
  2. Laat optioneel alle indices uit de tijdelijke tabel vallen om dingen te versnellen.

    SHOW INDEX FROM temporary_table;
    DROP INDEX `PRIMARY` ON temporary_table;
    DROP INDEX `some_other_index` ON temporary_table;
    
  3. Laad de CSV in de tijdelijke tabel

    LOAD DATA INFILE 'your_file.csv'
    INTO TABLE temporary_table
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (field1, field2);
    
  4. Kopieer de gegevens met 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. Verwijder de tijdelijke tabel

    DROP TEMPORARY TABLE temporary_table;
    

Met behulp van SHOW INDEX FROM en SHOW COLUMNS FROM dit proces kan voor elke tabel worden geautomatiseerd.



  1. Talk-dia's:verbeteringen in partitionering in PostgreSQL 11

  2. Kan ik meerdere rijen door komma's in één kolom scheiden?

  3. Oracle Sequentietrigger maken

  4. Rails Migrations:geprobeerd om het type kolom te veranderen van string naar integer