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

Откуда:
Сообщений: 1118
Добрый день помогите советом пожалуйста. Есть две бд с 5-ю таблицами структура идентична. мне нужно обновить ряд связанных таблиц данными с другой. И не знаю как лучше и проще это сделать.
5 фев 13, 12:46    [13877064]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Данные обновляются командой update.
5 фев 13, 12:51    [13877106]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
lans
Member

Откуда:
Сообщений: 1118
Это то понятно. Наверное не так спросил. Я вот не знаю как проще сделать и как правельней. Сделать запросом что то вроде этого

UPDATE TableA A
    INNER JOIN TableB B
    ON A.ID = B.ID
SET A.Name = B.Name

или писать процедуру перебирая в цикле строку заводить переменные и т.д. ? Как правильно не знаю.
5 фев 13, 12:57    [13877145]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Glory
Member

Откуда:
Сообщений: 104760
lans
Я вот не знаю как проще сделать и как правельней.

Правильнее - это когда вы получитет тот результат, что вам нужен.
А какой вам нужен - непонятно.
5 фев 13, 13:02    [13877181]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Гавриленко Сергей Алексеевич
Данные обновляются командой update.
Может, MERGE лучше подойдёт?
5 фев 13, 13:08    [13877229]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
iap
Гавриленко Сергей Алексеевич
Данные обновляются командой update.
Может, MERGE лучше подойдёт?
Мне-то откуда знать, что автору подойдет. Он партизан не менее 60го левела.
5 фев 13, 13:10    [13877253]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
lans
Member

Откуда:
Сообщений: 1118
Есть две бд ShopTest и Shop по структуре идентичны и у них есть такие вот таблицы

Есть таблица
ChargeNum CategoryId
---------- ---------- ----------------------
111111 1
111111 2
111111 3
222222 4
222222 5

и Есть таблица

BookName BookId CategoryId
---------- ---------- ----------------------
111111 1 2
111111 2 2
111111 3 3
222222 4 4
222222 5 1

так вот мне надо данными бд ShopTest обновить эти две таблицы в бд Shop
5 фев 13, 13:17    [13877343]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Glory
Member

Откуда:
Сообщений: 104760
lans
так вот мне надо данными бд ShopTest обновить эти две таблицы в бд Shop

И как должны выглядеть эти таблицы после обновления ?
например, сколько записей должно быть в каждой таблице, если изначально в них разное число записей ?
5 фев 13, 13:22    [13877385]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
lans
Member

Откуда:
Сообщений: 1118
Количество одинаковое и id одинаковые просто сами поля с данными надо обновить с одной бд в другой
5 фев 13, 13:23    [13877395]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Glory
Member

Откуда:
Сообщений: 104760
lans
Количество одинаковое

Это вы своим честным словом гарантируете ?
И что должен будет делать запрос, если ваши гарантии окажутся несостоятельными ?
5 фев 13, 13:27    [13877439]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
lans
Member

Откуда:
Сообщений: 1118
ID одинаковые да.
5 фев 13, 13:29    [13877450]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Glory
Member

Откуда:
Сообщений: 104760
lans
ID одинаковые да.

DELETE - для очистки таблицы (TRUNCATE если возможно)
INSERT - для добавления записей.
5 фев 13, 13:31    [13877470]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
Может, MERGE лучше подойдёт?

Может, и подойдёт, если автор озвучит тут свой "select @@version" :)
5 фев 13, 13:32    [13877473]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
lans
Member

Откуда:
Сообщений: 1118
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) Jun 17 2011 00:57:23 Copyright (c) Microsoft Corporation Express Edition with Advanced Services on Windows NT 6.0 <X86> (Build 6001: Service Pack 1)
5 фев 13, 13:34    [13877494]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
lans
ID одинаковые да.
Никаких ID не наблюдаю.


Может, всё-таки, сделаете скрипт CREATE TABLE для таблиц и INSERT тестовых данных?
Или сразу про UPDATE ... FROM ... JOIN ... почитать можно
5 фев 13, 13:35    [13877502]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
lans
Member

Откуда:
Сообщений: 1118
Да вот не знаю как с UPDATE ... FROM ... JOIN можно обновить связанные данные тоже т.е. таблицу Book
5 фев 13, 13:46    [13877599]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
lans
Да вот не знаю как с UPDATE ... FROM ... JOIN можно обновить связанные данные тоже т.е. таблицу Book
А что, там IDENTITY?
А как же слова про какие-то равные ID?

Или там некаскадные FK?
Беспредметное обсуждение.
5 фев 13, 13:55    [13877683]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
а что значит "обновить" ?

полная схема обновления - это:
1) при наличии данных в обновляемой таблице заменить на правильные значения из эталонной
2) при отсутствии в обновляемой - добавить из эталонной
3) при отсутствии в эталонной - удалить в обновляемой

вам нужен только первый вариант обновления?
5 фев 13, 14:02    [13877765]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Utesov
Member

Откуда: Минск
Сообщений: 1
Топорный метод - бекап первой таблицы, вторую - truncate, восстанавливаем бекап.
profit?
5 фев 13, 18:02    [13879776]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Utesov
бекап первой таблицы

Что такое "бекап таблицы"?
5 фев 13, 18:10    [13879821]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
backup table
Guest
Гость333
Utesov
бекап первой таблицы

Что такое "бекап таблицы"?

ну как же, backup table ...
Картинка с другого сайта.

зы
гугл даже, что находит по "MSSQL backup table"
5 фев 13, 18:16    [13879851]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
asd24
Member

Откуда:
Сообщений: 47
Хардкорный способ. Вам подойдет.
-- БД, на которую необходимо сделать обновление
USE SecondDB
IF EXISTS(SELECT OBJECT_ID('TableA')) DROP TABLE TableA

-- БД, с которой необходимо сделать обновление
USE FisrtDB
SELECT mt.A, mt.B
INTO SecondDB.dbo.TableA
FROM FisrtDB.dbo.TableA mt
6 фев 13, 21:59    [13887493]     Ответить | Цитировать Сообщить модератору
 Re: Обновление одной бд данными с другой  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Гавриленко Сергей Алексеевич
Мне-то откуда знать, что автору подойдет. Он партизан не менее 60го левела.
не в бровь а в глаз
6 фев 13, 22:10    [13887559]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить