|
Как с наименьшими потерями преобразовать дату в универсальную при обновлении БСП | ☑ | ||
---|---|---|---|---|
0
1S_User
13.12.17
✎
11:35
|
Добрый день. Необходимо обновить БСП. Там измерение регистра меняется с типа "Дата" на Универсальная дата в миллисекундах, т.е. число(14,0). Регистр огромный. Десятки миллионов записей.
В голову приходят 2 варианта: 1. накатывать в 3 релиза сначала доп. реквизит и в него скопировать дату, затем поменять тип и вернуть значения, уже преобразовав, потом удалить реквизит 2. Выгрузить в файл перед апдейтом, а после загрузить. Более приоритетный, конечно, но оба варианта чудовищные на самом деле. Такой переход должен быть весьма распространенным. Кто сталкивался, как решали? |
|||
1
novichok79
13.12.17
✎
11:43
|
(0) а что за регистр сведений? и какие версии БСП?
|
|||
2
novichok79
13.12.17
✎
11:44
|
(0) и да, я бы делал вторым способом.
|
|||
3
lodger
13.12.17
✎
11:49
|
я, как ленивый чувак, сделал бы по 1 сценарию, но немножко иначе.
а) добавить реквизит\измерение\ресурс с Универсальная дата в миллисекундах, неспешно заполнить с конвертацией из исходного. б) удалить исходный, реквизит\измерение\ресурс переименовать в исходный. |
|||
4
Fragster
гуру
13.12.17
✎
11:51
|
перенести таблицу скулем в другую БД, странкейтить, обновить, перенести скулем обратно с преобразованием в юникстайм
|
|||
5
novichok79
13.12.17
✎
11:51
|
(3) неплохой вариант
|
|||
6
Fragster
гуру
13.12.17
✎
11:52
|
в юникстайм*1000
|
|||
7
Fragster
гуру
13.12.17
✎
11:52
|
ну и да, если это какие-то замеры производительности, то подумать, а нужны ли эти данные, и без сожаления грохнуть
|
|||
8
lodger
13.12.17
✎
11:54
|
(4) это более производительный вариант, но тут надо кроме конфигуратора уметь открыть MSSMS, например.
|
|||
9
Serg_1960
13.12.17
✎
12:03
|
Я так понимаю, весь вопрос упирается в изменение измерения регистра. Ибо преобразование даты - не вопрос ("Миллисекунды=Дата*1000;")
|
|||
10
Fragster
гуру
13.12.17
✎
12:07
|
(9) а вот неправильная у тебя формула
|
|||
11
Serg_1960
13.12.17
✎
12:08
|
(0) "накатывать в 3 релиза" - не в три, а в два релиза: добавить тип число; обработка преобразования; убрать типа дата.
|
|||
12
1S_User
13.12.17
✎
12:09
|
(1) Замеры времени. Поднятие БСП до 2.4.4
(9) Вопрос именно в том, как наименее болезненно провести реструктиризацию. База сверхгигантская. Вариант со скюлем понравилсся. Но, блин, я не админ их скюля. Придется договариваться. |
|||
13
1S_User
13.12.17
✎
12:09
|
(11) Ну так лишний реквизит тоже потом убрать надо будет.
|
|||
14
Fragster
гуру
13.12.17
✎
12:10
|
(12) договоритесь до того, что не нужны вам эти замеры :)
|
|||
15
Fragster
гуру
13.12.17
✎
12:10
|
в новой БСП, кстати, есть задание, удаляющее исторические данные замеров
|
|||
16
1S_User
13.12.17
✎
12:11
|
(10) А там, кстати, не юникстайм. Там именно миллисекунды с Дата(1,1,1). текущаяуниверсальнаядатавмиллисекндах() это именно оно. Не спрашивайте меня, почему.)
|
|||
17
1S_User
13.12.17
✎
12:11
|
(14) Скорее решат, что я не нужен.)
|
|||
18
Serg_1960
13.12.17
✎
12:11
|
(10) Ага, ждите, щас, я вам тут всю функцию писать буду :) Лениво же :(
|
|||
19
xxTANATORxx
13.12.17
✎
12:12
|
в скуле скопируй колонку таблицы, заполни, после обновления переименуй
|
|||
20
Fragster
гуру
13.12.17
✎
12:14
|
(16) тогда правильная
|
|||
21
1S_User
13.12.17
✎
12:14
|
(19) А при рестуктуризации же колонка слетит. Только если таблицу всю скопировать, а потом вернуть преобразованную.
|
|||
22
1S_User
13.12.17
✎
12:16
|
Ну, короче, я понял, что неожиданно легкого пути нет, как и ожадалось. Пойду гонять на копии прода различные варианты, какой менее убоен.)
|
|||
23
Fragster
гуру
13.12.17
✎
12:17
|
(22) и все-таки попробуй (14)
|
|||
24
Fragster
гуру
13.12.17
✎
12:18
|
и очисти РС перед обновлением
|
|||
25
1S_User
13.12.17
✎
12:21
|
(24) Да, я прихожу к выводу, что выгрузить все, очистить регистр, а потом постепенно подгружать то, что нужно.
|
|||
26
Fragster
гуру
13.12.17
✎
12:27
|
(25) тут есть промежуточный, но очень важный этап - случайно потерять выгруженные данные.
|
|||
27
Fragster
гуру
13.12.17
✎
12:28
|
при этом этап выгрузки можно даже пропустить
|
|||
28
Serg_1960
13.12.17
✎
12:55
|
(13) "Ну так лишний реквизит тоже потом убрать надо будет." - ёпрст:) Добавить нужно не реквизит, а тип(!) - т.е. существующие измерение регистра нужно сделать составного типа.
Тогда можно будет читать записи; преобразовывать значение и записывать запись - редактирование в один проход всех записей регистра. |
|||
29
1S_User
13.12.17
✎
13:12
|
(28) Ну, не в данном случае. Составное индексное поле в этом случае может привести к не лучшим последствиям "между релизами".
|
|||
30
Serg_1960
13.12.17
✎
13:32
|
Ну, как бы "да", но это мелочи - если выбирать между двумя или тремя релизами :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |