Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Delphi: Базы данных > Перенос данных из одинаковых таблиц разных баз данных |
Автор: maxjuvefan 11.01.16, 09:37 |
Всем привет! У меня такой вопрос - есть 2 базы данных, в которых некоторые таблицы совпадают. Одна база находится на локальном компьютере, другая на сервере. На локальном компьютере есть база данных c более полной таблицей phone, нужно скопировать данные из этой таблицы и перенести их в точно такую же таблицу phone в базу данных, расположенную на сервере, то есть обновить ее, внести недостающие данные. Для эксперимента я создал на локальном две маленькие базы, bd1 и bd2 с одинаковой таблицей phone и попытался перенести данные из bd2 в bd1: insert bd1.dbo.Phone select * from bd2.dbo.Phone Sql server 2008 выдал такую ошибку: Значение столбца идентификаторов в таблице "bd1.dbo.Phone" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в ON. Кто чем может помочь? |
Автор: Bas 11.01.16, 09:46 |
Видать есть поля с типом IDENTITY и они разные для одного и того же телефона. 1.Удалите записи в таблицы и вставьте новые, но есть риск нарушить целостность данных. 2.Добавлять только те телефоны которых нет в таблице приемнике. |
Автор: Akina 11.01.16, 10:23 |
Цитата maxjuvefan @ попытался перенести данные из bd2 в bd1: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> insert bd1.dbo.Phone select * from bd2.dbo.Phone Попытайтесь сделать нормально, а не тяп-ляп - перечислите вставляемые поля в секции INSERT и выбираемые в секции SELECT, исключив IDENTITY поля, есссно. Это как минирмум. А по уму - используйте MERGE. |
Автор: Bas 11.01.16, 10:53 |
Все забываю что она есть в MS тоже. |
Автор: Павел Калугин 11.01.16, 11:42 |
Цитата maxjuvefan @ Всем привет! У меня такой вопрос - есть 2 базы данных, в которых некоторые таблицы совпадают. Одна база находится на локальном компьютере, другая на сервере. На локальном компьютере есть база данных c более полной таблицей phone, нужно скопировать данные из этой таблицы и перенести их в точно такую же таблицу phone в базу данных, расположенную на сервере, то есть обновить ее, внести недостающие данные. Для эксперимента я создал на локальном две маленькие базы, bd1 и bd2 с одинаковой таблицей phone и попытался перенести данные из bd2 в bd1: insert bd1.dbo.Phone select * from bd2.dbo.Phone Sql server 2008 выдал такую ошибку: Значение столбца идентификаторов в таблице "bd1.dbo.Phone" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в ON. Кто чем может помочь? Про identity уже написали Следующая грабля будет нарушение целостности ключа (forin key) Наверняка "телефоны" не просто так добавлены, а связаны с какой-нибудь сущностью. И наверняка между ними есть forin key и с вероятностью 146% в разных базах у одной и той же "сущности" id разные. Так что запрос будет несколько ... хмм .. или совсем не несколько... сложнее Некоторые и не знают, и потому аккуратно селекты пишут |
Автор: Akina 11.01.16, 12:11 |
Да пусть сперва хотя бы с несвязными данными разберётся в своей однотабличной модельке... |