Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239416
  • 博文数量: 37
  • 博客积分: 325
  • 博客等级: 一等列兵
  • 技术积分: 1199
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-09 00:04
个人简介

坚持原创,虽然有些东西很简单,但也算是一种积累。

文章分类

全部博文(37)

文章存档

2013年(28)

2012年(9)

我的朋友

分类: 系统运维

2013-05-12 00:03:10

个人的一个想法,本意是修改数据库表内容,从实用性出发直接一条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

阅读(1996) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~