View Full Version : کپی اطلاعات جدول در یکدیگر
mokamel
شنبه 19 اردیبهشت 1394, 20:42 عصر
در Sql 2008
سلام
دوستان من دوتا جدول در دوتا دیتابیس محتلف دارم . تمامی مقادیر جدول ها یکشان هستند یعنی جدول 1 در دیتابیس 1 دقیقا مقادیر و نحوه طراحی و ... آنها با جدول 2 در دیتابیس 2 یکسان است . حالا می خوام مقادیر جدول 1 را در جدول 2 کپی کنم . فقط نکته ای که می ماند این است که با توجه به شرایط زیر چگونه باید اینکار را انجام دهم ؟
1- فیلد ID در جداول بصورت uniqueidentifier تعریف شده است
سوال : چگونه این کار را انجام دهم ( بدون در نظر گرفتن مورد پایین )؟
اگر این جداول با یکسری از جداول دیگر دیتابیس دارای رابطه است باشد آنهم از طریق همان ID که در همه جداول دیتابیس 2 بصورت uniqueidentifierتعریف شده است . چگونه ؟ یعنی مثلا در این جدول که میخواهیم کپی کنیم تو جدول 2 . در جدول 2 کد ID یکسری از جداول دیگر هم باید در هر row آن باشد .
golbafan
شنبه 19 اردیبهشت 1394, 20:47 عصر
بجای کپی کردن میتونید از union استفاده کنید تا نتیجه آن جمع دو جدول باشد
مثال:
select * from tbl1
union
select * from tbl2
gelayor14
دوشنبه 21 اردیبهشت 1394, 20:36 عصر
من هم همین مشکل رو دارم با یکم تغییر مختصر
میخام برای سال مالی جدید یه سازمان جدا در نظر بگیرم که این سازمان یک کد دارد که نوع اشunique identifier هست و باید با NewID() تولید بشه
حالا میخام کل اطلاعات پایه ای که هر شرکت داره رو از سازمانی که هست به کد سازمانی جدید کپی کنم که در هر جدول پایه حداقل یک فیلد با نوع UNIQU IDENTIFIER باید همزمان تولید بشه
ساختار جدول اصلی سازمان اینطوریه
ID unique identifier
organizationid uniqueidentifier
orgname varchar(100)
,...
یعنی اطلاعات پایه شرکت که با کد سازمانی قبلی هست مجدد با کد سازمانی جدید درج بشه (با در نظر گرفتن اینکه در موقع کپی کردن رکوردها کد سازمان جدید به جای سازمان قبلی میاد و تو هر جدولی هم میخام مشخص کنم که فلان ستون مقدار بگیره یا نگیره یا با تابع newid() مقدار بگیره
ممنون میشم دوستان راهنمایی کنند
soheileee
دوشنبه 21 اردیبهشت 1394, 23:54 عصر
من شاید خیلی درست متوجه نشدم.
ببین الان 2 تا جدول داری که ساختارشون یکی هست در دو تا دیتابیس مجزا، درسته؟
و شما فقط دو تا جدول داری که می خوای داده های یکی رو با NewID در دیگری بریزی، درسته؟
البته هر دو دیتا بیس در یک سرور هستند و اینطوری نیست که یکیش یه جا باشه و یکی دیگه ش توی یه سرور دیگه.
اگه اینطور باشه پاسخ خیلی ساده ست، که می شه یه چیزی شبیه این:
insert into DB1.dbo.table_1 (id, name)
select case id when 'B6D16096-E267-4F14-A5E9-1B51E13C35D2' then NEWID() end ID
, name
from DB2.dbo.Table_2
where id = 'B6D16096-E267-4F14-A5E9-1B51E13C35D2'
اما اکه منظورت اینه می خوای تمام داده های درون تعداد زیادی جدول رو از یک دیتابیس ببری به یک دیتابیس دیگه و در زمان دیتا ترنسپورت یه سری تغییرات توش بدی، اونوقت باید بری سراغ SSIS و این کار رو انجام بدی.
gelayor14
سه شنبه 22 اردیبهشت 1394, 19:02 عصر
انتقال اطلاعاتی که میخام توی یک دیتابیس هست
در واقع اطلاعاتی که تو جدول ذخیره شده اند و اطلاعات پایه شرکت هستند میخام تو همون جدول با ثبت بشند فقط با کد سازمان جدید
من بخشی از این رو تونستم انجام بدم با این دستور
Insert into table name(col1, col2,..)
select Newid() , actName,....
میخام یه اسکریپت بنویسم و هربار تنها اطلاعات اولیه رو عوض کنم و برای شرکت های دیگه این رو پیاده کنم
الان تونستم اطلاعات رو درج کنم ولی یه مشکل دیگه پیدا کردم این اطلاعات نسبت به هم وابستگی دارند یعنی پدر و فرزندی و این دو تو یه جدول هستند و یکی کلید اصلی و اون یکی کلید خارجی هست
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.