1

MySQL で 2 つのテーブルをマージするにはどうすればよいですか? このトピックに関する他のいくつかの投稿を見てきましたが、十分に詳しく説明していません。

私は初心者の MySQL ユーザーなので、次のようなプライマリ テーブルと一時テーブルがあることをご了承ください。

CREATE TABLE temp_import( id int(11) NOT NULL auto_increment,
Namevarchar(255) デフォルト NULL,
MerchantIDint(11) デフォルト NULL,
SKUvarchar(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/ 私はこれを見てきましたが、それは私の頭の中にあります。うまくいかない...

4

3 に答える 3

0

代わりに、SKUを主キーにします。そこからINSERT ... SELECT ... ON DUPLICATE KEY UPDATEクエリを実行できます。

于 2011-06-08T05:51:27.910 に答える
0

最終的にこれに使用したものを投稿すると思いました。それはおそらく「最良の」方法ではなく、列の削除は完全にオプションです。

ALTER TABLE `temp_import`
ADD `deleteme` tinyint NOT NULL
DEFAULT 0; -- If you haven't already added a deleteme column 


UPDATE `temp_import` SET  `deleteme` = 1; -- Set the delete field 

LOAD DATA LOW_PRIORITY LOCAL INFILE "import.csv" REPLACE INTO TABLE `temp_import`  FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" LINES TERMINATED BY "\n"  IGNORE 1 LINES (`id`, `name`, `m_id`, `sku`);

DELETE FROM `temp_import` WHERE  `deleteme` = 1;

ALTER TABLE `tests` DROP COLUMN `deleteme` -- Optional
于 2012-03-29T01:44:42.253 に答える
0

これがニーズに合っているかどうかはわかりませんが、データのビューが必要なようです。

データベース ビューは、その中のデータを照会できる「仮想テーブル」として知られています。

ビューに関する優れた情報をここで見つけることができます。ビューは非常に強力であり、データの別のプレゼンテーションが必要な場合に検討する価値があります。

于 2011-06-08T06:01:49.587 に答える