shell 批量修改数据库

2018-02-05 10:35:38来源:oschina作者:安西都护府首席程序员人点击

分享

shell功能强大,语法简单,在Linux上做一些运维工作特别适合。一般简单的补数,删数,定时清理日志。批量修改redis,批量修改数据……都可以通过shell脚本实现。


前几天我在数据库里面新建了一张表A,需要把数据从表B 查询出来然后导入到A,大概就是这样的SQL 语法 insert into a(field……) select field……from B ; 如果直接写这个语句本身是可行的。但是一旦B表数据量大了就会中断执行,因为数据量大了会内存溢出。因此我找出一个日期字段,每次只查询B一天的数据然后导入到A. insert into a(field……) select field…… from B where load_date='today'。如果只有几天的数据执行这个SQL 几次也就罢了。但是如果需要导入一年就得执行365次。因此就想到了shell来解决。


下面是一个例子,首先按照日期字段查询tb_api_orde的数据。


然后把数据导入到tb_api_validatemailnum,循环执行保证一年的数据都被导入


#! /bin/bashtoday=20170101;
if [ $1 ]
then
today=$1;
fi
enddate=`date -d"$today+1year" "+%Y%m%d"`;
index=1;
for((i=startdate;ido
echo "insert intotableby date $i";
echo `mysql -hhost -uuser -ppass -Ddatabase < insert into tb_api_validatemailnum(mailnum,customercode,load_date,authenticate)
select mailnum,CUSTOMERCODE,load_date,userkey
fromtb_api_orderwhere load_date='$i'
EOF`
index=$((index+1));
done;

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台