Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.144.219.156] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Здравствуйте, ситуация следующая:
есть приложение, работающее с базой данных, на некотором объекте(в другом от меня городе), в БД накопилось уже некоторое количество данных. по воле судьбы, понадобилось расширить функционал приложения и БД (по факту в БД были изменены типы данных нескольких полей в таблицах, которые теперь допускают нулл, и типы данных в нескольких хранимых процедурах). т.о. на данный момент у меня есть пустая, но актуальная по функционалу, БД и полная, но требующая обновления функционала БД. Внимание вопрос: каким образом наименьшими потом и кровью мне перенести данные из старой БД в новую ? возможно есть какое-то стандартное средство или стандартные команды, для этой, думается, не нестандартной задачи ? |
Сообщ.
#2
,
|
|
|
Задача абсолютно стандартная
Данные во временную таблицу, основную чистим меняем структуру и инсерт им данные из времянки. Секас возможен с автоинкрементами. В принципе альтер тейбл и алтер колумн должны отработать. Проверить - сделать клон БД и накатить изменения структур. Если ничего не обрушилось то описанный выше способ не нужен |
Сообщ.
#3
,
|
|
|
Цитата Павел Калугин @ Данные во временную таблицу, основную чистим меняем структуру и инсерт им данные из времянки. А какой смысл два раза гонять данные? Создать новую структуру и перегнать в неё данные, старую прибить, новую переименовать. Ещё проще, конечно, менять структуру вообще без переноса данных, но вот тут надо смотреть. Порой ALTER TABLE быстрее, а порой и медленнее... и если проигрыш по времени не суточный, я считаю in-place upgrade предпочтительным. Во-первых, при этом гораздо меньше изменений (права, связи, триггеры и пр.), во-вторых, нет косвенных проблем (типа тех же, с автоинкрементами). |
Сообщ.
#4
,
|
|
|
Кстати количество нетрадиционного секса с автонкрементом помогает избежать SET IDENTITY_INSERT (Transact-SQL)
https://msdn.microsoft.com/ru-ru/library/ms188059.aspx |
Сообщ.
#5
,
|
|
|
Т.о., насколько я понял, мне достаточно будет непосредственно на месте прописать ALTER TABLE и ALTER PROCEDURE, т.к. у меня меняются только второстепенные поля.
|
Сообщ.
#6
,
|
|
|
bogdanchek ты точно читал?
|