匹配处理数据库的命令,可用于批量数据迁移和导入。
生成需要执行的sql文件(每行一个sql命令)。示例如下:
- delete from lbs_poi where poiid=1000052855 limit 1;
- delete from lbs_poi where poiid=1000052856 limit 1;
- delete from lbs_poi where poiid=1000052857 limit 1;
- delete from lbs_poi where poiid=1000052858 limit 1;
- delete from lbs_poi where poiid=1000052859 limit 1;
jar包存放位置:10.74.28.129 /data1/bingqing/shAndJar/splitFile.jar splitFile.jar
上面目录是笔者操作的机器,处于公司内网中,如果没有连接内网,请参考者先进入内网。
执行jar包查看jar调用说明:
- /data1/bingqing/shAndJar # java -jar splitFile.jar
- split file with fixed lineNum
- paras: inputFilePath encode fileLineNum
- sample: java -jar splitFile.jar poiToDeleteSql.sql utf8 1000
-
根据说明,将目标sql文件拆分成多个子文件。
shell脚本存放位置:10.74.28.129 /data1/bingqing/shAndJar/sleepSql.sh
脚本内容:
/data1/bingqing/shAndJar # cat sleepSql.sh
- #!/bin/sh
- echo '------------------------' >> deletelog.txt
-
- current=`date "+%Y-%m-%d %H:%M:%S"`
- #echo $current
- echo $current >> deletelog.txt
-
- #mysql -uLBQ -pPSBPkJaHX6aTeWEOds -hm4000i.randa.grid.sina.com.cn --default-character-set=utf8 -P4000 LBQ < poiToDeleteSqlAll2.sql
-
-
- for i in {3001..10000};
- do
- #echo $i
- echo $i >> deletelog.txt
- mysql -uLBQ -pPSBPkJaHX6aTeWEOds -hm5000i.randa.grid.sina.com.cn --default-character-set=utf8 -P4000 LBQ < poiToDeleteSqlAll${i}.sql
-
- current=`date "+%Y-%m-%d %H:%M:%S"`
- #echo $current
- echo $current >> deletelog.txt
-
- sleep 3s
- done
-
-
- echo 'over!' >> deletelog.txt
注:
1.mysql -uLBQ -pPSBPkJaHX6aTeWEOds -hm4000i.randa.grid.sina.com.cn --default-character-set=utf8 -P4000 LBQ < poiToDeleteSqlAll${i}.sql
这是数据库的连接串儿,参数解析如下:
- -uLBQ 指定用户名(有时候也习惯采用数据库们或者部门名称)
-
- -pPSBPkJaHX6aTeWEOds 密码
-
- -hm4000i.randa.grid.sina.com.cn 连接对象或者连接目标,这个参数包含了主机名,端口,目标库的模式是主库还是从库,与jdbc中的MySQL连接配置异曲同工。其中hm表名连接的是主库,如果是hs则为从库;4000为端口号;后缀为主机名称(内网有配置,直接使用域名)
-
- --default-character-set=utf8 指定编码格式,防止操作过程产生乱码问题
-
-
- -P4000 指定端口
-
- LBQ 指定数据库