在日常业务中, 会将mysql表根据日期创建分表, 最简单的方法就是写个脚本每个月定时跑一遍创建下一个月的增量表。编写脚本有很多,这里就介绍用bash来实现。个人认为这是最快, 代码量、依赖最少的方法。
bash优点是代码量少,简单。但依赖了mysql
客户端(并不是要求安装MySQL服务,简单的方法就是从安装好MySQL服务的服务器,将msyql
文件拷贝下来就好)。
废话不多说了, 贴码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #!/bin/bash
MYSQL_HOST=127.0.0.1 MYSQL_USER=root MYSQL_PWD=111111 MYSQL_PORT=3306
TABLE_LIST=($1) echo $TABLE_LIST
resultCode=0 for table_prefix in ${TABLE_LIST[*]} do pre_table=$table_prefix$(date "+%Y%m") new_table=$table_prefix$(date -d "+1 month" "+%Y%m") sql="mysql -u${MYSQL_USER} -h${MYSQL_HOST} -P${MYSQL_PORT} -p${MYSQL_PWD} -e 'create table ${new_table} like ${pre_table}'" echo $sql if [ $? -gt 0 ] then $resultCode=$? fi done exit $resultCode
|
执行:
1
| $ bash table-generate.sh "log.userlogin_log_ log.userip_log_"
|
PS:bash的数组没有关联数组