Перенос данных в другую БД?

Добрый день! После переноса сервисов и справочников возникла проблема с переносом контрагентов? Так как контрагенты связаны по внешнему ключу с контактами нужно по идее перенести контакты) Но в свою очередь контакты тоже связаны с контрагентами по внешнему ключу) как быть???

Нравится

8 комментариев

Перенесите контрагентов и контактов без связей, а потом добавьте связи update'ами.

Спасибо!

Что то я никак не могу сообразить как теперь обновить записи) Перенес контакты и контрагентов) А как теперь у контактов обновить AccountID и у контрагентов поле основной контакт????

Добрый день!

Я бы на Вашем месте все выгрузила в Excel, а после этого просто настроила импорт из файла сразу со связкой контакта с контрагентом и наоборот.
http://community.terrasoft.ua/blogs/3352

Или же вручную sql-запросами проставлять контрагентов.
Приятной работы!

Максим, напрашивается вопрос о том, каким образом Вы перенесли данные о контактах и контрагентах?
Если запросом, то наверное Вы помимо полей Name, CityID и т.д., переносили и поле ID? Если да (то есть Вам удалось реализовать запрос), то трудностей с обновлением не будет - ведь все необходимые контакты и контрагенты уже перенесены, ID всех записей в двух базах совпадают.
Если же записи были перенесены не запросом, а другими средствами, укажите какими. Но и в этом случае вариант с Update'ами наиболее рациональный.

Да записи были перенесены запросом. Вот текст

Перенос контрагентов
INSERT INTO [TSCRM33 SMS Work].[dbo].[tbl_Account]
           ([ID]
           ,[CreatedOn]
           ,[CreatedByID]
           ,[ModifiedOn]
           ,[ModifiedByID]
           ,[Name]
           ,[OfficialAccountName]
           ,[PrimaryContactID]
           ,[TerritoryID]
           ,[AnnualRevenue]
           ,[EmployeesNumber]
           ,[OwnerID]
           ---,[CampaignID]
           ,[AddressTypeID]
           ,[Address]
           ,[CityID]
           ,[StateID]
           ,[ZIP]
           ,[CountryID]
           ,[ActivityID]
           ,[FieldID]
           ,[Communication1]
           ,[Communication2]
           ,[Communication3]
           ,[Communication4]
           ,[Communication5]
           ,[Communication1TypeID]
           ,[Communication2TypeID]
           ,[Communication3TypeID]
           ,[Communication4TypeID]
           ,[Communication5TypeID]
           ,[Description]
           ,[AccountTypeID]
           ,[Code]
           ,[TaxRegistrationCode]
           ,[INN]
           ,[KPP]
           ,[PrimaryGovRegNumber]
           ,[GovRegCertificateData]
           ,[TopManagerID]
           ,[CodeOKATO]
           ,[CodeOKPO]
           ,[CodeOKOGU]
           ,[CodeOKOPF]
           ,[CodeOKFS]
           ,[CodeOKVED]
           ,[UsePhoneNumbersInApplication]
           ,[StatusAccount]
           ,[Commentary]
           ,[TariffID]
           ,[SubjectsID]
           ,[RegionID]
           ,[NPID]
           ,[StreetID]
           ,[Adres]
           ,[ImportID]
           ,[ContactBiiling])
 
SELECT [ID]
      ,[CreatedOn]
      ,[CreatedByID]
      ,[ModifiedOn]
      ,[ModifiedByID]
      ,[Name]	
      ,[OfficialAccountName]
      ,(Select ID from tbl_Contact 
 
				 where tbl_Contact.ID  = [MGMN_CRM_Work].[dbo].[tbl_Account].PrimaryContactID)
 
      ,[TerritoryID]
      ,[AnnualRevenue]
      ,[EmployeesNumber]
      ,[OwnerID]
      ---,[CampaignID]
      ,[AddressTypeID]
      ,[Address]
      ,[CityID]
      ,[StateID]
      ,[ZIP]
      ,'5E4AE4D2-5574-4D81-8D19-88B399BAA510'
      ,[ActivityID]  
      ,[FieldID] 
      ,[Communication1]
      ,[Communication2]
      ,[Communication3]
      ,[Communication4]
      ,[Communication5]  
      ,[Communication1TypeID]
      ,[Communication2TypeID]
      ,[Communication3TypeID]
      ,[Communication4TypeID]
      ,[Communication5TypeID]
      ,[Description]
      ,[AccountTypeID]
      ,[Code]
      ,[TaxRegistrationCode]
      ,[INN]
      ,[KPP]
      ,[PrimaryGovRegNumber]
      ,[GovRegCertificateData]
 
      ,[TopManagerID]
      ,[CodeOKATO]
      ,[CodeOKPO]
      ,[CodeOKOGU]
      ,[CodeOKOPF]
      ,[CodeOKFS]
      ,[CodeOKVED]
      ,[UsePhoneNumbersInApplication]
      ,[StatusAccount]
      ,[Commentary]
      ,[TariffID]
      ,[SubjectsID]
      ,[RegionID]
      ,[NPID]
      ,[StreetID]
      ,[Adres]
      ,[ImportID]
      ,[ContactBiiling]
  FROM [MGMN_CRM_Work].[dbo].[tbl_Account]
Where not Name is Null

Контакты

INSERT INTO [TSCRM33 SMS Work].[dbo].[tbl_Contact]
           ([ID]
      ,[CreatedOn]
      ,[ModifiedOn]
      ,[Dear]
      ,[JobTitle]
      ,[CreatedByID]
      ,[GenderID]
      ---,[AccountID]
      ,[OwnerID]
      ,[ModifiedByID]
      ,[AddressTypeID]
      ,[Address]
      ,[CityID]
      ,[StateID]
      ,[CountryID]
      ,[JobID]
      ,[Communication1]
      ,[Communication2]
      ,[Communication3]
      ,[Communication4]
      ,[Communication1TypeID]
      ,[Communication2TypeID]
      ,[Communication3TypeID]
      ,[Communication4TypeID]
      ,[TerritoryID]
      ,[SalutationID]
      ,[Description]
      ,[DepartmentID]
      ,[ZIP]
      ---,[CampaignID]
      ,[Name]
      ,[DecisionRoleID]
      ,[DoNotCall]
      ,[EmailOptOut]
      ,[ContactTypeID]
      ,[SubjectsID]
      ,[RegionID]
      ,[NPID]
      ,[StreetID]
      ,[Adres])
 
SELECT [ID]
      ,[CreatedOn]
      ,[ModifiedOn]
      ,[Dear]
      ,[JobTitle]
      ,[CreatedByID]
      ,[GenderID]
      ---,[AccountID]
      ,[OwnerID]
      ,[ModifiedByID]
      ,[AddressTypeID]
      ,[Address]
      ,[CityID]
      ,[StateID]
      ,[CountryID]
      ,(Select JobID from tbl_Job 
	       where tbl_Job.ID = [MGMN_CRM_Work].[dbo].[tbl_Contact].JobID )   
     ,[Communication1]
      ,[Communication2]
      ,[Communication3]
      ,[Communication4]
      ,[Communication1TypeID]
      ,[Communication2TypeID]
      ,[Communication3TypeID]
      ,[Communication4TypeID]
      ,[TerritoryID]
      ,[SalutationID]
      ,[Description]
      ,[DepartmentID]
      ,[ZIP]
      ---,[CampaignID]
      ,[Name]
      ,[DecisionRoleID]
      ,[DoNotCall]
      ,[EmailOptOut]
      ,[ContactTypeID]
      ,[SubjectsID]
      ,[RegionID]
      ,[NPID]
      ,[StreetID]
      ,[Adres]
  FROM [MGMN_CRM_Work].[dbo].[tbl_Contact]

Вот настал новый день и все вроде заработало) Вот запрос обновления

UPDATE [TSCRM33 SMS Work].[dbo].[tbl_Contact]
   SET 
       [AccountID] = (select AccountID from [MGMN_CRM_Work].[dbo].[tbl_Contact]
						where [TSCRM33 SMS Work].[dbo].[tbl_Contact].ID = [MGMN_CRM_Work].[dbo].[tbl_Contact].ID)  

Maxim, я бы очень осторожно относился к таким запросам - без условий where. Дело в том, что если для записей [TSCRM33 SMS Work].[dbo].[tbl_Contact] не будет соответствия в [MGMN_CRM_Work].[dbo].[tbl_Contact].ID, то Вы затрете нужную информацию. Например, если уже кто-то в базе [TSCRM33 SMS Work] поработал и создал новых Контрагентов и привязал их к Контактам. Поэтому для надежности добавьте проверку:

...
WHERE EXISTS(SELECT * FROM [MGMN_CRM_Work].[dbo].[tbl_Contact] T1
WHERE [TSCRM33 SMS Work].[dbo].[tbl_Contact].ID = T1.ID)
Показать все комментарии