Обновление структуры созданной таблицы

Zh0rzh

Новичок
Обновление структуры созданной таблицы

Значит, допустим, есть таблица(table1(id int, field1 text, field2 text)), с уже достаточным
количеством записей. Но тут вдруг потребовалось добавить в эту же таблицу 3-е поле (field3 text).
Мне на ум приходит только один алгоритм:
1. Создать таблицу table2(id int, field text, fiel2 text, field3 text).
2. Перенести данные из таблицы table1 в таблицу table2.
3. Удалить таблицу table1, создать новую table1(id int, field text, fiel2 text, field3 text)
4. Перенести данные из table2 в table1.
5. Удалить table2.
Но неосторожное использование этого алгоритма может привести к потере данных.
Может существует какая нибудь аппаратная функия, или кто знает более стабильный алгоритм?
 

Апельсин

Оранжевое создание
есть очень полезная штука, такая как ALTER TABLE, которая именно для того и предназначена, что бы менять структуру таблицы.
 

.des.

Поставил пиво кому надо ;-)
Zh0rzh :) ну намудрил...
Апельсин ну нельзя же так сразу.. разочаровывать.. он мог еще столько нового придумать :)
 

Crazy

Developer
ALTER TABLE предназначена для небольших изменений, не более того. Если, к примеру, поле FIO нужно разбить на LName, MName, FName, то лажа выходит, не правда ли? :) Тут именно "создать-перенести-удалить..." :)
 

mahoune

Guest
2Crazy, Можно сделать ALTER TABLE - добавить поля. Пройтись UPDATE и заполнить их. Сделать ALTER - удалить старое поле. :)

Может еще пару новых алгоритмов выдумаем?! :) Мне понравилось! :)
 

Yurik

/dev/null
я раз конвертил телефонный справочник из текстового!! файла (оригинал с АТС), где в одну строку 90000 абонентов было забито, в МуСкульный формат.
сделать ALTER TABLE - добавить поля. Пройтись UPDATE и заполнить их. Сделать ALTER - удалить старое поле
После многих итераций "Пройтись UPDATE" и в конце "ALTER - удалить старое поле" база стала почти на порядок меньше (без индексов) и стала работать (с индексами) на два порядка быстрее.
 

Crazy

Developer
Да, mahoune, я действительноь забыл, что MySQL один из немногих умеет убивать колонки. Тем не менее, если при реструктуризации мы должны поменять количество записей, то вариант работы с новой таблицей будет проще.
 

Zh0rzh

Новичок
Народ. Большое вам спасибо.
Не пришлось заново изобретать велосипед. :))
 
Сверху