Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
mehos
Member

Откуда:
Сообщений: 4
Доброго времени суток! Имеется 2 базы данных DB1 и DB2 на Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.1 (Build 2600: Service Pack 3), структура их одинаковая. Стоит задача добавить из таблицы DB1.dbo.TovMatCen записи отсутствующие в таблице DB2.dbo.TovMatCen по полю Name

Например:

DB1
CodName...
1a...
2b...
3d...
.........


DB2
CodName...
1a...
2b...
.........


Нужно запись 3,d,... добавить в таблицу DB2.dbo.TovMatCen

Набросал запрос
insert into DB2.dbo.TovMatCen (cod,name,...)
select top 1 * from DB1.dbo.TovMatCen  
where DB1.dbo.TovMatCen.Name<>DB2.dbo.TovMatCen.Name

Но выдает ошибку "Не удалось привязать составной идентификатор DB2.dbo.TovMatCen.Name"

В sql пока не силен, в чем может быть ошибка?
15 дек 09, 10:08    [8067169]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
gluchenso
Member

Откуда: Украина, Киев.
Сообщений: 290
select * 
into DB2.dbo.TovMatCen
from DB1.dbo.TovMatCen
where Name not in 
(select Name 
from DB2.dbo.TovMatCen)


G L U K
15 дек 09, 10:22    [8067244]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Top10. вопрос 9
15 дек 09, 10:23    [8067245]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
gluchenso
Member

Откуда: Украина, Киев.
Сообщений: 290
чуток не так. может по-тупому, но все же )

insert into DB2.dbo.TovMatCen
select * 
from DB1.dbo.TovMatCen
where Name not in 
(select Name 
from DB2.dbo.TovMatCen)
G L U K
15 дек 09, 10:26    [8067275]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
mehos
Member

Откуда:
Сообщений: 4
gluchenso
чуток не так. может по-тупому, но все же )

insert into DB2.dbo.TovMatCen
select * 
from DB1.dbo.TovMatCen
where Name not in 
(select Name 
from DB2.dbo.TovMatCen)
G L U K


Спасибо за вариант, выходит "Невозможно вставить явное значение для столбца идентификаторов в таблице "TovMatCen", когда параметр IDENTITY_INSERT имеет значение OFF."
Нужно отключить? (set identity_insert "поле" on)
Забыл уточнить что первое поле Cod счетчик, видимо в запросе нужно указывать все поля кроме счетчика?
15 дек 09, 10:49    [8067440]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
vino
Member

Откуда:
Сообщений: 1191
ессно
SET IDENTITY_INSERT DB2.dbo.TovMatCen ON
insert into DB2.dbo.TovMatCen
select * 
from DB1.dbo.TovMatCen
where Name not in 
(select Name 
from DB2.dbo.TovMatCen)
SET IDENTITY_INSERT DB2.dbo.TovMatCen OFF
15 дек 09, 10:59    [8067520]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
gluchenso
Member

Откуда: Украина, Киев.
Сообщений: 290
mehos
gluchenso
чуток не так. может по-тупому, но все же )

insert into DB2.dbo.TovMatCen
select * 
from DB1.dbo.TovMatCen
where Name not in 
(select Name 
from DB2.dbo.TovMatCen)
G L U K


Спасибо за вариант, выходит "Невозможно вставить явное значение для столбца идентификаторов в таблице "TovMatCen", когда параметр IDENTITY_INSERT имеет значение OFF."
Нужно отключить? (set identity_insert "поле" on)
Забыл уточнить что первое поле Cod счетчик, видимо в запросе нужно указывать все поля кроме счетчика?



это само собой. Про у тебя все остальные поля в виде "...", поэтому я написал *.
Когда вставляешь прописывай куда вставлять и какие поля выбирать.
15 дек 09, 10:59    [8067526]     Ответить | Цитировать Сообщить модератору
 Re: Добавление записей из одной таблицы в другую(из одной БД в другую)  [new]
PokeMan
Member

Откуда: MOSKAU
Сообщений: 312
Ошибку правильно выдает.
В процессе выборки сервер не может обработать условие DB1.dbo.TovMatCen.Name<>DB2.dbo.TovMatCen.Name т.к. в предложении from отсутствует DB2.dbo.TovMatCen

insert DB2.dbo.TovMatCen(cod,name,...)
select top 1 cod, name, ...
from
  DB1.dbo.TovMatCen as t1
  left join DB2.dbo.TovMatCen as t2
    on t1.Name = t2.Name
where
  t2.cod is null

И почитайте то, что посоветовал Вам Knyazev Alexey.

+ не забудьте про COLLATION при сравнении текстовых столбцов.
15 дек 09, 11:06    [8067580]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить