Категорії
DataBases

[mysql] Перенос колонки значений с одной базы в другую

Случилась такая беда: при переносе дампа базы с одного сервера на другой, значения одной из колонок полностью не перенеслись (перенеслось только 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

Собственно всё.

Один коментар до “[mysql] Перенос колонки значений с одной базы в другую”

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff