PDA

View Full Version : حرفه ای: مشکل در ارسال داده های غیر تکراری از 2 پایگاه داده مختلف



ngmajid
دوشنبه 01 آبان 1391, 08:49 صبح
سلام دوستان :قلب:


من 2 تا پایگاه داده در دو مکان مختلف دارم.
قراره یک سری از اطلاعات جدول یکی از اونها به جدول متناظری در پایگاه داده دیگه منتقل بشه.
من یک سری اطلاعات رو از جدول fromTable در پایگاه داده dbSourceTable به جدول saveTable_save در پایگاه داده dbDestinationTable انتقال دادم و مشکلی هم با این قسمت ندارم.
کدش به شکل زیره



public static OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "/dbDestinationTable.accdb;");

if ( Conn.State == ConnectionState.Closed ) Conn.Open();

OleDbCommand cmd = new OleDbCommand("INSERT INTO saveTable_save(field1_save, field2_save, field3_save) SELECT field1, field2, field3 FROM [C:/dbSourceTable.mdb;pwd=123456].fromTable " , Conn);
cmd.ExecuteNonQuery();



در حال حاضر نیاز دارم که فقط داده های غیر تکراری در جدول saveTable_save ذخیره بشه(داده هایی که از فیلد field1 به فیلد field1_save منتقل میشن).
فقط داده های غیر تکراری
در ضمن من نوع field1_save رو از نوع ایندکس با خاصیت فقط قبول داده های غیر تکراری تعیین کردم(Indexed=Yes , No Duplicates).

اگه یه راهی برای پرش از روی داده های غیر تکراری باشه و راهنماییم کنین ممنون میشم
یا هر پیشنهاد دیکه ای مثل استفاده از Distinct

حسین شهریاری
دوشنبه 01 آبان 1391, 09:07 صبح
شما میتونی بیای اونایی که در طرف اول هستند و در طرف دوم نیستند را منتقل کنید. برای این کار نیز از EXISTS استفاده کنید.
موفق باشید

ngmajid
دوشنبه 01 آبان 1391, 12:48 عصر
من از EXISTS استفاده کردم ولی جواب نداد و syntax error میده
نحوه استفاده از EXISTS رو صحیح بلد نیستم و بخاطر همین درست نمیشه
اگه ممکنه بگین چجوری داخل پرس و جو باید استفاده کنم
ممنون

حسین شهریاری
دوشنبه 01 آبان 1391, 13:13 عصر
select * from customers
where cust# exist(select cust# from orders where customers.cust#=orders.cust#)
ضمنا یادت نره اگه رفتی حرم سلام من را به آقا برسونی!

ngmajid
دوشنبه 01 آبان 1391, 13:49 عصر
من با این کد جواب گرفتم
میشه ببینید درسته یا نه


OleDbCommand cmd = new OleDbCommand(" INSERT INTO saveTable_save (field1_save, field2_save, field3_save) SELECT field1, field2, field3 FROM [C:/dbSourceTable.mdb;pwd=123456].fromTable WHERE not exists (select field1_save from saveTable_save where field1_save=field1 ) ;" , Conn);



در ضمن هر دفعه این کووری باید 50000 رکورد رو چک کنه
آیا راهی هست برای این کار که سرعت زیادتری داشته باشه


در ضمن امام رضایی که من میشناسم گوشاش اینقد تیزه که صدای کسایی که صداش میکنن رو از همه جای عالم میشنوه

ولی به روی چشم ، ایشالا جواب سلامش رو تو روزای آینده لمس کنی
موفق و پیروز باشی

حسین شهریاری
دوشنبه 01 آبان 1391, 14:13 عصر
در ضمن هر دفعه این کووری باید 50000 رکورد رو چک کنه
آیا راهی هست برای این کار که سرعت زیادتری داشته باشه


والا چیزی که من میبینم نه راهی نداری!
موفق باشی

ngmajid
سه شنبه 02 آبان 1391, 07:33 صبح
ممنون از راهنمایی
منم همین فکرو میکنم
راه سریعتری وجود نداره
مگه اینکه بخوام جدولا رو برای ماهها مختلف تکرار کنم تا ظرفیت هر جدول کم بشه