Проблемы при изменении структуры таблиц

tiproktikum
Дата: 13.05.2015 09:01:33
Добрый день, господа.

Вопрос по MSSQL 2014. Подскажите, можно ли не пользуясь командой ALTER TABLE добавлять колонки в таблицу? Например, я пытаюсь пересоздать таблицу добавив в нее необходимые колонки. При этом что бы сохранить данные таблицы выгружаю их предварительно с помощью:

bcp oknotek_new3.dbo.CRM_Rig_AccessTypes out D:\DB_MSSQL\Export\CRM_Rig_AccessTypes.dat -c -Usa


далее drop CRM_Rig_AccessTypes , затем create CRM_Rig_AccessTypes

далее:


bcp oknotek_new3.dbo.CRM_Rig_AccessTypes in D:\DB_MSSQL\Export\CRM_Rig_AccessTypes.dat -T -c


но если кол-во колонок изменилось bcp ругается, если не изменилось - заливает.

Есть ли возможность таким способом добавлять колонки?
alexeyvg
Дата: 13.05.2015 09:04:13
tiproktikum
но если кол-во колонок изменилось bcp ругается, если не изменилось - заливает.
Нужно использовать файл формата, в котором перечислять колонки. Ну и конечно сделать колонки, для которых нет данных, допускающими NULL
Glory
Дата: 13.05.2015 09:07:42
tiproktikum
Подскажите, можно ли не пользуясь командой ALTER TABLE добавлять колонки в таблицу?

В таблицу - нет

tiproktikum
Есть ли возможность таким способом добавлять колонки?

Если количество полей в файле и таблице различаются, то ознакомьтесь в хелпе со статьями
Using a Format File to Skip a Table Column
Using a Format File to Skip a Data Field
LexusR
Дата: 13.05.2015 09:34:42
tiproktikum
Добрый день, господа.

Вопрос по MSSQL 2014. Подскажите, можно ли не пользуясь командой ALTER TABLE добавлять колонки в таблицу? Например, я пытаюсь пересоздать таблицу добавив в нее необходимые колонки. При этом что бы сохранить данные таблицы выгружаю их предварительно с помощью:

bcp oknotek_new3.dbo.CRM_Rig_AccessTypes out D:\DB_MSSQL\Export\CRM_Rig_AccessTypes.dat -c -Usa


далее drop CRM_Rig_AccessTypes , затем create CRM_Rig_AccessTypes

далее:


bcp oknotek_new3.dbo.CRM_Rig_AccessTypes in D:\DB_MSSQL\Export\CRM_Rig_AccessTypes.dat -T -c


но если кол-во колонок изменилось bcp ругается, если не изменилось - заливает.

Есть ли возможность таким способом добавлять колонки?



Я так понял что
1. вы выгружаете данные
2. добавляете колонки
3. пытаетесь назад залить данные (со старым набором колонок)

а не проще тогда ничего не выгружать и не загружать а просто добавить колонки

ALTER TABLE oknotek_new3.dbo.CRM_Rig_AccessTypes ADD NewIntColumn1 int,NewVarcharColumn1 varchar(100),.... и т п
tiproktikum
Дата: 13.05.2015 09:37:30
tiproktikum
Есть ли возможность таким способом добавлять колонки?

Если количество полей в файле и таблице различаются, то ознакомьтесь в хелпе со статьями
Using a Format File to Skip a Table Column
Using a Format File to Skip a Data Field[/quot]


идею понял, спасибо
Владислав Колосов
Дата: 13.05.2015 12:13:18
tiproktikum, неясно - для чего вообще изменять структуру данных и абсолютно неясно - для чего перекачивать содержимое таблицы при добавлении колонок.
Mind
Дата: 14.05.2015 22:28:58
tiproktikum
Добрый день, господа.

Вопрос по MSSQL 2014. Подскажите, можно ли не пользуясь командой ALTER TABLE добавлять колонки в таблицу?
Нелюбовь к ALTER TABLE на генетическом уровне?

Но все равно, не понятно зачем два раза грузить данные туда-обратно то, когда можно один?
Создайте новую таблицу нужной структуры, перелейте данные, удалите основную таблицу и переименуйте новую.
o-o
Дата: 14.05.2015 23:00:29
Mind
Создайте новую таблицу нужной структуры, перелейте данные

ну не все же умеют перечислять нужные поля в INSERT :)
felix_ff
Дата: 14.05.2015 23:46:35
tiproktikum,

а чем вам не подходит SELECT INTO, раз данные все равно переливаете обратно в таблицу?