کپی رکوردهای یک جدول به جدول مشابه در دیتابیس دیگر
سلام
دوستان عزیز با کد زیر می توانید اطلاعات جدول مبدا در دیتابیس مبدا را به جدول مشابه در دیتابیس مقصد کپی کنید
برای تجمیع اطلاعات بدرد میخوره. احتمالا روشهای بهتری هم باشه ولی شاید بدرد بعضی از دوستان بخوره
var i:Integer;begin
qry1.Insert;
for i := 0 to qry2.fieldcount - 1 do
begin
try
qry1.fieldbyname( qry2.fields[i].fieldname ).value := qry2.fields[i].value
except
end;
end;
qry1.Post;
نقل قول: کپی رکوردهای یک جدول به جدول مشابه در دیتابیس دیگر
سلام دوستان من دقیقا به نیت پرسیدن همین سوال اودم و چون این تاپیک رو مشابه به سوالم دیدم همیج جا مطرح میکنم.
این روشی که idehrayan فرمودند برای من بسیار کند هست من نمیخوام دونه به دونه روی رکورد های جدول مبدا حرکت کنم و جدا جدا اینسرت بزنم چون نزدیک 7000 رکورد باید حداقل روزی یک بار این کار براش انجام بشه که خیلی زمان بره و میخوام روشی باشه که کوئری insert into به یکباره از این کانکشن به اون کانکشن ارسال کنه.
داستان اینه که من یک دیتابیس MySQL لوکال دارم که میخوام تنها چند تا از فیلدهای دو تا از جدولاشو به یک دیتابیس دیگه که روی یک هاست اینترنی هست ارسال کنم
الان با Ado Connection های متفاوت به هر کدوم بصورت مجزا به خوبی کانکت میشم ولی برای نوشتن دستور insert into روی کوئری؛ چون اون کوئری تنها داره به یک AdoConnection اشاره می کنه بلد نیستم بنویسم
کسی روشی داره که بتونم چند فیلد از یک جدولم رو به جدولی در کانکشن دیگه ارسال کنم؟
نقل قول: کپی رکوردهای یک جدول به جدول مشابه در دیتابیس دیگر
یکی از مهمترین دلایل کند بودن روش بالا می تونه این باشه که DataSet شما مثلا به یک DBGrid وصل هستش، در زمان پیمایش دیتاست در کنترلهای متصل به اون هم پیمایش انجام میشه که باعث ترسیمات گرافیکی میشه و در نتیجه سرعت رو شدیدا کاهش میده، پس قبل از هرگونه پیمایش در دیتاست باید اول دستور DisableControls رو اجرا کنید تا ارتباط دیتاست و کنترلها قطع بشه و در انتهای پیمایش هم دستور EnableControls رو اجرا کنید تا دوباره ارتباط برقرار بشه، مثال :
ADOTable.DisableControls;
try
ADOTable.First;
while not ADOTable.EOF do
begin
// Insert Record
// Next
end;
finally
ADOTable.EnableControls;
end;
...
نقل قول:
داستان اینه که من یک دیتابیس MySQL لوکال دارم که میخوام تنها چند تا از فیلدهای دو تا از جدولاشو به یک دیتابیس دیگه که روی یک هاست اینترنی هست ارسال کنم
یا باید با دو Connection جداگانه متصل بشید و با همون روش بالا جدول اول رو پیمایش کنید و در جدول دوم ثبت کنید یا روش بهتر اینکه از یک واسطه روی هاست استفاده کنید، مثلا یک وب سرویس ساده PHP که اطلاعات رو با یک فرمت مشخص مثل JSON براش بفرستید و اون به صورت لوکال توی بانک اطلاعاتی هاست ثبت کنه
نقل قول: کپی رکوردهای یک جدول به جدول مشابه در دیتابیس دیگر
مثل همیشه عالــــی
بسیار آموزنده بود
سپاسسس