Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Павел USA
Guest |
Есть две таблицы A и B Таблица B это архивная таблица,таблица A это рабочая и она постоянно меняется. В неё добавляют постоянно новые колонки (разработка идет). Нужно периодически в таблицу B скидывать данные из таблицы A. Как на автомате добавить новые колонки в таблицу В. |
24 дек 12, 07:51 [13674858] Ответить | Цитировать Сообщить модератору |
tpg Member Откуда: Novosibirsk Сообщений: 23902 |
|
||
24 дек 12, 08:06 [13674867] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
-- если НЕ менять порядок столбцов и не удалять столбцы ALTER TABLE B RENAME TO old_B; select * into B fom A; insert B select * from old_B; drop table old_B; |
24 дек 12, 08:07 [13674869] Ответить | Цитировать Сообщить модератору |
Павел USA
Guest |
Можно немного по подробней в этом месте ALTER TABLE B RENAME TO old_B; |
||
24 дек 12, 08:20 [13674895] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
sp_rename
|
24 дек 12, 09:01 [13675030] Ответить | Цитировать Сообщить модератору |
Павел USA
Guest |
Надо как то запросом сличить наименование таблиц в базе. Потом если есть разница то создать новые колонки либо их переименовать. Не хочется на клиенте делать парсирование и динамическую генерацию запросов. |
||
24 дек 12, 09:10 [13675045] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Ну... INFORMATION_SCHEMA.COLUMNS вам в кривые руки. |
||||
24 дек 12, 09:28 [13675118] Ответить | Цитировать Сообщить модератору |
Алексей Куренков Member [заблокирован] Откуда: Москва Сообщений: 567 |
Павел USA, можно как нибудь из подобного запроса курсор делать и динамическим SQL исполнять... select case when a.TABLE_NAME is null then 'alter table '+a.TABLE_SCHEMA+'.'+a.TABLE_NAME+ ' add '+b.COLUMN_NAME+' '+b.DATA_TYPE+isnull('('+b.CHARACTER_MAXIMUM_LENGTH+')','') +isnull('('+b.NUMERIC_PRECISION+','+b.NUMERIC_SCALE+')','') else 'alter table '+a.TABLE_SCHEMA+'.'+a.TABLE_NAME+ ' drop column '+a.COLUMN_NAME+';' end ,* from INFORMATION_SCHEMA.columns a full join INFORMATION_SCHEMA.columns b on a.TABLE_CATALOG=b.TABLE_CATALOG and a.TABLE_SCHEMA=b.TABLE_SCHEMA and a.TABLE_NAME = b.TABLE_NAME where a.TABLE_NAME = 'SourceTable' and b.TABLE_NAME = 'DestTable' and ( a.TABLE_NAME is null or b.TABLE_NAME is null ) |
24 дек 12, 13:49 [13676864] Ответить | Цитировать Сообщить модератору |
Саша(р)
Guest |
помогите, есть несколько задач. к ним нужно написать по 3 запроса к каждой. |
22 янв 13, 13:32 [13808827] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Ну и напиши. |
||
22 янв 13, 13:34 [13808849] Ответить | Цитировать Сообщить модератору |
Саша(р)
Guest |
рассматривается бд сайта Мой круг. Хранится инф о людях,их знакомых, профессиях и организациях.выдать инф о:1) всех знакомых Иванова И.И,2)местах работы знакомых Петрова П.П.всех знакомых знакомых. Помогите!!!!!!!!!!!!!!!! |
22 янв 13, 13:43 [13808983] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
А то двойку поставят ? |
||
22 янв 13, 13:57 [13809107] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Давайте сюда параметры подключения к бд сайта Мой круг, будут вам запросы. |
||
22 янв 13, 14:20 [13809317] Ответить | Цитировать Сообщить модератору |
Gexan Member Откуда: Spb Сообщений: 35 |
Видать экзамен уже закончился)) |
22 янв 13, 14:42 [13809577] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |