MySQL で 2 つのテーブルをマージするにはどうすればよいですか? このトピックに関する他のいくつかの投稿を見てきましたが、十分に詳しく説明していません。
私は初心者の MySQL ユーザーなので、次のようなプライマリ テーブルと一時テーブルがあることをご了承ください。
CREATE TABLE
temp_import
(id
int(11) NOT NULL auto_increment,
Name
varchar(255) デフォルト NULL,
MerchantID
int(11) デフォルト NULL,
SKU
varchar(255) デフォルト NULL,
PRIMARY KEY (id
) ) ENGINE=MyISAM AUTO_INCREMENT=765811 DEFAULT CHARSET=utf8;
次のように一時テーブルにデータを挿入しています。
LOAD DATA LOCAL INFILE \'29762.txt\' REPLACE INTO TABLE temp_import FIELDS TERMINATED BY \'|\' OPTIONALLY ENCLOSED BY \'"\' LINES TERMINATED BY \'\n\' (Name, MerchantID, SKU);
各テーブルのテーブル形式は同じですが、データは時間の経過とともに変化します。一部のアイテムはデータの可能性がありますが、SKU は一定のままです。一部のアイテムは提供されなくなり、データベースから削除する必要があります。
例:
現在のデータベース テーブル:
1, dog, 101, dog101
2, cat, 101, cat101
3, chicken, 102, chicken100
4, chicken food, 102, chicken101
新しいデータベース テーブル:
1, dog, 101, dog101
2, cat, 102, cat101
3, chicken, 102, chicken100
5, Frog, 103, frog101
最終結果は
1, dog, 101, dog101
2, cat, 102, cat101
3, chicken, 102, chicken100
5, Frog, 103, frog101
チキンフードを削除、カエルを追加、猫を更新。
また、これは可能な限り効率的である必要があります。私はいくつかの巨大なファイルで作業します。また、MySQL のみのコードにすることもできます。
http://www.xaprb.com/blog/2006/02/21/flexible-insert-and-update-in-mysql/ 私はこれを見てきましたが、それは私の頭の中にあります。うまくいかない...