sql >> データベース >  >> RDS >> Mysql

MySQL LOAD DATA INFILE with ON DUPLICATE KEY UPDATE

    次の手順を使用して、この機能をエミュレートできます。

    1. 新しい一時テーブルを作成します。

      CREATE TEMPORARY TABLE temporary_table LIKE target_table;
      
    2. 必要に応じて、一時テーブルからすべてのインデックスを削除して、処理を高速化します。

      SHOW INDEX FROM temporary_table;
      DROP INDEX `PRIMARY` ON temporary_table;
      DROP INDEX `some_other_index` ON temporary_table;
      
    3. CSVを一時テーブルにロードします

      LOAD DATA INFILE 'your_file.csv'
      INTO TABLE temporary_table
      FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
      (field1, field2);
      
    4. ON DUPLICATEKEYUPDATEを使用してデータをコピーします

      SHOW COLUMNS FROM target_table;
      INSERT INTO target_table
      SELECT * FROM temporary_table
      ON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2);
      
    5. 一時テーブルを削除します

      DROP TEMPORARY TABLE temporary_table;
      

    SHOW INDEX FROMの使用 およびSHOW COLUMNS FROM このプロセスは、任意のテーブルに対して自動化できます。



    1. OracleSQLの表のすべての制約の名前を表示します

    2. 一時テーブルを作成する前に、一時テーブルが存在するかどうかを確認し、存在する場合は削除してください

    3. SQL Server(T-SQL)でのCHARINDEX()関数のしくみ

    4. MySQLデータベースからhtmlドロップダウンリストへのデータのフェッチ