个人的一个想法,本意是修改数据库表内容,从实用性出发直接一条sql 编辑就可,但从复用性及可扩展性来说本人更愿意用此办法。
以下是例子,一种应用场景,提供的是一种思路并非针对此次修改最佳方案。 看了您可能会觉的何必。个人认为使用配置文件结合shell(awk)处理在运维过程中还是能做到复用、可用、修改简单等特性。
配置文件(typeclass)内容:
#新旧表dishmenu_practice 字段typeclass 内容
#旧内容表示:0不打印 1厨房 2海鲜 3明档 4面间 6吧台点餐 其中12 表示厨房+海鲜
#新内容表示: 0不打印 1厨房 3吧台 8海鲜 11明档 12面间 其中1,8表示厨房+海鲜
#旧内容 新内容
0 0
1 1
12 1,8
123 1,8,11
13 1,11
14 1,12
4 12
6 3
以下是处理脚本内容:
#!/bin/bash
dbhost=192.168.1.14
dbbase=dish
dbuser=infosms
dbpass=infosms
dbtable=dishmenu_practice
field=typeclass
conf=./typeclass
group_by_count=`grep -v '^#' typeclass |wc -l`
for ((i=1;i<=$group_by_count;i++));
do
#取旧字段
old_field=`grep -v '^#' $conf |sed -n ''$i'p' |awk '{print$1}'`
#取新字段
new_field=`grep -v '^#' $conf |sed -n ''$i'p' |awk '{print$2}'`
mysql -P3307 -h$dbhost -u$dbuser -p$dbpass -D$dbbase <
update $dbtable set $field='$new_field' where $field='$old_field';
UPDATE
done
阅读(2016) | 评论(0) | 转发(0) |