|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
Доброй ночи, есть в таблице колонка с типом Код: sql 1.
, ее необходимо сконверитить в Код: sql 1.
, но у меня проблема в том, что в таблице есть очень много записей и я не могу их удалить. подскажите, пожалуйста, можно одноврененно и апдейт типа сделать и конверт значений? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:50 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 07:27 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
lsk, Можете добавить в таблицу новую колонку numeric(28,10), в неё перенести данные из колонки float(53), после переноса удалить колонку float(53) и присвоить её колонке numeric(28,10). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 09:53 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
teCa, интересно, а зачем? alter column проделает то же самое! Так имеет смысл поступать, только в случае если типы или некоторые значения - не приводятся автоматически. Тогда да. Удалить индексы, в которых участвует обновляемая колонка, добавить колонку, проапдейтить с явным преобразованием, удалить колонку, переименовать новую в старую, сделать alter table rebuild, построить ранее удаленные индексы. ... как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 11:39 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
Ещё надо пройти по процедурам и заменить типы переменных, если такие были. Изменение типов параметров надо применять осторожно, может потребоваться доработка клиентского приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 11:43 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
uaggster teCa, интересно, а зачем? alter column проделает то же самое! Так имеет смысл поступать, только в случае если типы или некоторые значения - не приводятся автоматически. Например, для порционного переноса ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 11:43 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1.
а так ерроров не будет, оно просто автоматом конвертнет и максимум, что может быть - это потеряться точность? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 12:08 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
lsk aleks222 Код: sql 1.
а так ерроров не будет, оно просто автоматом конвертнет и максимум, что может быть - это потеряться точность? Операция либо будет закончена целиком, либо все останется как есть (если возникнет ошибка). Так работают реляционные базы данных. Если вам "попробовать" Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 13:13 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
msLex uaggster teCa, интересно, а зачем? alter column проделает то же самое! Так имеет смысл поступать, только в случае если типы или некоторые значения - не приводятся автоматически. Например, для порционного переноса Именно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 14:04 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
всем спасибо большое за разъяснения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 15:35 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
teCa msLex пропущено... Например, для порционного переноса Именно. Флейма для: Не понимаю, зачем может понадобиться порционный перенос. В случае, если у вас миллиард записей в таблице? И вам не хочется блокировать таблицу надолго? Ну, предположим, вы добавили поле (что, кстати, будет затратной и блокирующей операцией, если поле фиксированной длины) Чего вы хотите добиться перенося данные порциями? Чтобы у вас блокировка не эскалировалась до уровня таблицы (и параллельные запросы не отправились курить?). Ну сделайте ALTER TABLE ... SET ( LOCK_ESCALATION = DISABLE) и запустите апдейт WITH (ROWLOCK), нет? А потом всё равно убивать индексы с данным полем, и строить их заново, что тоже затратная и блокирующая операция, если у вас не энтерпрайз, конечно. Хотя да, миллиард строк, у вас энтерпрайз... ну, или очень. Очень. Очень прямые руки. Ну и alter table rebuild тоже не мешало бы сделать после удаления поле. Миллиард же... Хотя вот ни разу не помню, бывает ли он online. В общем, не понимаю, зачем порционно то в данном сценарии. Просветите! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 16:18 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
uaggster Флейма для: Не понимаю, зачем может понадобиться порционный перенос. Alter выполняющаяся в единой транзакции, а значит пока она выполняется лог не сможет усекаться. При достаточно интенсивном изменение данных (не в этой таблице, а вообще во всей БД) и длительной операции alter, может потребоваться очень много места в логе ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:20 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
uaggster, блокировка изменения схемы несовместима с другими типами блокировки. Если alter зависнет надолго, то это может повлиять на работу пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:25 |
|
Как поменять тип колонки с данными с float на numeric
|
|||
---|---|---|---|
#18+
Владислав Колосов uaggster, блокировка изменения схемы несовместима с другими типами блокировки. Если alter зависнет надолго, то это может повлиять на работу пользователей. Начиная с SQL Server 2016 alter column можно делать с опцией ONLINE=ON ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:29 |
|
|
start [/forum/search_topic.php?author=killerbean&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 977ms |
total: | 1137ms |
0 / 0 |