Случилась такая беда: при переносе дампа базы с одного сервера на другой, значения одной из колонок полностью не перенеслись (перенеслось только 150 значений из 3500). Заливать дамп заново – не вариант, так как в базу после дампа уже внесены изменения. Выход один – только переносить колонку значений и потом UPDAT’ить в новой базе.
1) Дамп колонки.
Для переноса значений делаем сначала дамп колонки и ключевого поля, так как нам нужно будет к чему-то привязаться. Благо ключевым полем у меня оказался id. В итоге, выполняем такую команду:
$mysql -u USER -p DB -e "select id,category from TABLE_NAME where category!='0';" > ./category.sql
В итоге получим файлик, который состоит из 2-х столбцов:
52446 11,101 52444 11,101 52441 11,101 52439 11,101 52437 11,101 52412 11,101 52411 11,101 52395 11,101 52390 11,101 52382 11,101 51901 11,101 51864 11,101 26707 11,101 26706 11,101 53545 11,101 ...
Хорошо, что у меня второй столбец без пробелов, иначе пришлось бы извращаться.
Теперь копируем этот файлик на новый сервер.
2) Заливка «дампа».
Для заливки дампа я написал такой скрипт:
#!/bin/sh while read myline do id=`echo $myline | awk '{print $1}'` category=`echo $myline | awk '{print $2}'` mysql -u USER -pPASSWORD DB -e "update TABLE_NAME set category='$category' where id='$id';" done < category.sql
Собственно всё.
https://skeletor.org.ua/?p=1840
Просмотров: 2760