sql >> Database teknologi >  >> RDS >> Mysql

MySQL LOAD DATA INFIL med PÅ DUBLIKAT NØGLEOPDATERING

Disse trin kan bruges til at efterligne denne funktionalitet:

  1. Opret en ny midlertidig tabel.

    CREATE TEMPORARY TABLE temporary_table LIKE target_table;
    
  2. Slet eventuelt alle indekser fra den midlertidige tabel for at fremskynde tingene.

    SHOW INDEX FROM temporary_table;
    DROP INDEX `PRIMARY` ON temporary_table;
    DROP INDEX `some_other_index` ON temporary_table;
    
  3. Indlæs CSV'en i den midlertidige tabel

    LOAD DATA INFILE 'your_file.csv'
    INTO TABLE temporary_table
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (field1, field2);
    
  4. Kopier dataene ved at bruge 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. Fjern den midlertidige tabel

    DROP TEMPORARY TABLE temporary_table;
    

Brug af SHOW INDEX FROM og SHOW COLUMNS FROM denne proces kan automatiseres for enhver given tabel.



  1. Sådan krypterer du en opdelt database i Access 2016

  2. Hvad betyder PÅ [PRIMÆR]?

  3. Løs SQL Server-database, der sidder fast i mistænkelig tilstand problem effektivt

  4. Sådan rettes "Konfigurationsmuligheden 'Agent XPs' eksisterer ikke" i SQL Server (T-SQL)