2011-12-30 10 views
0

私はC#で次の文を実行しています。 注文、データの2つのテーブルがあります。 Ordersはmysqlデータベースです。 データはMSSQLデータベースです。2つのテーブルを比較すると1つはmysql db、もう1つはMSSQL db

insert into orders (orders_id, customers_id, customers_cid, customers_vat_id, customers_name, customers_email_address) 
select 
    o.* 
from 
    Test.dbo.orders o 
where 
    not exists (
     select 1 
     from 
      CobraDemoData.dbo.Data a 
     where 
      a.email0 = o.customers_email_address 
    ) 

私は、あなたが次に何をすべきかを教えてくださいすることができ二つのデータベース

MySqlConnection sqlConn = new MySqlConnection("server=localhost;User Id=root;Password = 123456;Persist Security Info=True;database=xtcommerce";) 

SqlConnection con1 = new SqlConnection(@"Data Source=SUBASH-LAPTOP\COBRA;Initial Catalog=CobraDemoData;Integrated Security=True"); 

ための接続文字列を作成しています?すべてのヘルプははるかに高く評価されるだろう

..おかげで、 スバシュ....同様のクエリと同じキーによって順序付け二つのテーブルを照会

+0

内の行を特定することは、あなたが欲しいの方法を使用して更新することはできませんいくつかのユニークなフィールド、があるように持っています。あなたはいずれかからすべてのレコードを取得し、ループを別のデータベースを更新するには、LINQを使用して、別のデータベース間の結合を管理するか、またはエクスポートする必要があります。これは私がインプリメントする方法を知らないので答えではありません、私はこれらがより一般的なオプションのいくつかであることを知っています。理由:1つの接続で2つのデータベースに接続することはできません。 – xQbert

+0

これは* one-off *タイプのプロジェクトの場合、MySQLデータをMSSQLサーバーにインポートしてテーブルに入れてそこから作業することもできます。この方法で、データなどのジョインを行うことができます。これが長期プロジェクトの要件である場合は、この提案を無視してください。 – user1231231412

答えて

0

開き2読者及び行によって比較行を行い、そのような何か、(2つの接続があると仮定すると - MSSQLとMySQL:あなたは、この例に基づいて更新ロジックを実装することができます

var sc1 = mssql.CreateCommand(); 
var sc2 = mysql.CreateCommand(); 
sc1.CommandText = sc2.CommandText = "select id, name, email, phone from yourtable ORDER BY Id"; 
sc1.CommandTimeout = sc2.CommandTimeout = 0; 

      using (var r1 = sc1.ExecuteReader()) 
      { 
       using (var r2 = sc2.ExecuteReader()) 
       { 
        while (true) 
        { 
         bool read1 = r1.Read(); 

         if (read1^r2.Read()) 
          throw new Exception("Doesn't match!"); 

         if(!read1) {Console.WriteLine("MATCH!!!"); break;} 

         for (int i = 0; i < r1.FieldCount; i++) 
         { 
          if (r1.IsDBNull(i)^r2.IsDBNull(i)) 
           throw new Exception("Doesn't match!"); 

          if (string.Compare(r1[i].ToString(), r2[i].ToString(), StringComparison.InvariantCultureIgnoreCase) != 0) 
           throw new Exception("Doesn't match!"); 

         } 
        } 
       } 
      } 

が。

しかし

は、MSSQLまたはMySQLがそのデータベースにリンクされたテーブルが含まれていない限り、両方のテーブル

関連する問題