2015-09-08 14:07 GMT+03:00 Dmitry E. Oboukhov <unera@debian.org>:
есть огромная таблица на неск. десятков млн строк
в ней есть поле ENUM.
хотим преобразовать его в TEXT.
Можно ли это сделать на чистом SQL?
то есть ALTER TABLE .. ADD COLUMN col TEXT;
не будет блокироваться, далее надо его заполнить значением из ENUM и после этого можно будет сделать rename.
проблема в том что имеется действующая инфраструктура апгрейда-даунгрейда БД и она предполагает только up.sql, down.sql.
соответственно можно написать сколько угодно инструкций но на SQL а не на другом Я.П.
можно ли извратнуться как-то и сделать аналог
UPDATE table SET col1 = col2 WHERE col1 IS NULL
неубивающим БД?
пока в голову пришло только сгенерить этот самый SQL чтобы по 1000 записей сделал явно больше UPDATE'ов чем есть в БД записей и далее уже в транзакции доделал те что еще остаются недоделанными и переименовал бы столбики. --