2016-04-15 10 views
1

あるデータベースから別のデータベースにデータをコピーしようとしています。基本的に、私は2つのデータベースを持っています。 (IDを持っている、名前、DOB、住所)Mysqlはあるデータベースから別のデータベースにデータをコピーします。

  • カスタマー
  • 全顧客(IDを持っている、PHOTO、SIGNATURE)(名前、DOB、アドレスが含まれるように拡大)

すべてのお客様顧客データベース(1000万レコード)に保存されますが、「フル顧客」データベースには一部のみが格納されます。 (500万レコード)。

現在、レコードがないフルCustomerデータベースにすべてのCustomerレコードをコピーしたいとします。

私の擬似コードは、プログラミングのために以下の通りですが、私はmysqlの

for customer in customers: 
    if customer.ID not in (select ID from fullcustomer) 
     insert customer into fullcustomer 

答えて

1

することができますし、直接これを行うことができ、あなたのMySQLに直接それを行う必要がある場合、私は疑問に思って。

これを試してください。私はテーブルが同じデータベースにあると仮定しました。そうでなければ、テーブル名の前にデータベース名を付ける必要があります。私はfull_customerテーブルの欠落している列は既にそこにあると仮定しました(あなたはそこに置いてあります)。

基本的には、「比較のためにIDを使用して、テーブルの顧客からのユーザーのテーブルfull_customerレコードを挿入してください。あなたは何をすべき

INSERT INTO full_customer (ID, Name, DOB, Address) (
    SELECT ID, Name, DOB, Address FROM customer c 
    LEFT JOIN full_customer fc ON c.ID = fc.ID 
    WHERE fc.ID IS NULL 
) 

提供SQLは、あなたが実際にfull_customerテーブルに挿入したい顧客を選択するかどうかをチェックするために、健全性チェックのbeforehandsを行うことです。

SELECT ID, Name, DOB, Address FROM customer c 
LEFT JOIN full_customer fc ON c.ID = fc.ID 
WHERE fc.ID IS NULL 

IDを確認してください両方のテーブルの列が索引付けされます。そうでない場合は、これらの文の実行に永遠にかかります。

+0

これはうまく機能しました。助けてくれてありがとう。結合は素晴らしい仕事でした - あなたが言及したように多くのテストが必要でした。 – Mark

関連する問題