• 批量执行SQL文件


    一.功能

    匹配处理数据库的命令,可用于批量数据迁移和导入。

    二.操作步骤

    step1.生成需要执行的SQL文件

    生成需要执行的sql文件(每行一个sql命令)。示例如下:

    1. delete from lbs_poi where poiid=1000052855 limit 1;
    2. delete from lbs_poi where poiid=1000052856 limit 1;
    3. delete from lbs_poi where poiid=1000052857 limit 1;
    4. delete from lbs_poi where poiid=1000052858 limit 1;
    5. delete from lbs_poi where poiid=1000052859 limit 1;

    step2.将原始sql文件按照固定行数拆分

    jar包存放位置:10.74.28.129 /data1/bingqing/shAndJar/splitFile.jar splitFile.jar

    上面目录是笔者操作的机器,处于公司内网中,如果没有连接内网,请参考者先进入内网。

    执行jar包查看jar调用说明:

    1. /data1/bingqing/shAndJar # java -jar splitFile.jar
    2. split file with fixed lineNum
    3. paras: inputFilePath encode fileLineNum
    4. sample: java -jar splitFile.jar poiToDeleteSql.sql utf8 1000

    根据说明,将目标sql文件拆分成多个子文件。

    step3.人工监控执行有停顿的脚本

    shell脚本存放位置:10.74.28.129 /data1/bingqing/shAndJar/sleepSql.sh

    脚本内容:

    /data1/bingqing/shAndJar # cat sleepSql.sh
    1. #!/bin/sh
    2. echo '------------------------' >> deletelog.txt
    3. current=`date "+%Y-%m-%d %H:%M:%S"`
    4. #echo $current
    5. echo $current >> deletelog.txt
    6. #mysql -uLBQ -pPSBPkJaHX6aTeWEOds -hm4000i.randa.grid.sina.com.cn --default-character-set=utf8 -P4000 LBQ < poiToDeleteSqlAll2.sql
    7. for i in {3001..10000};
    8. do
    9. #echo $i
    10. echo $i >> deletelog.txt
    11. mysql -uLBQ -pPSBPkJaHX6aTeWEOds -hm5000i.randa.grid.sina.com.cn --default-character-set=utf8 -P4000 LBQ < poiToDeleteSqlAll${i}.sql
    12. current=`date "+%Y-%m-%d %H:%M:%S"`
    13. #echo $current
    14. echo $current >> deletelog.txt
    15. sleep 3s
    16. done
    17. echo 'over!' >> deletelog.txt

    注:

    1.mysql -uLBQ -pPSBPkJaHX6aTeWEOds -hm4000i.randa.grid.sina.com.cn --default-character-set=utf8 -P4000 LBQ < poiToDeleteSqlAll${i}.sql

    这是数据库的连接串儿,参数解析如下:

    1. -uLBQ 指定用户名(有时候也习惯采用数据库们或者部门名称)
    2. -pPSBPkJaHX6aTeWEOds 密码
    3. -hm4000i.randa.grid.sina.com.cn 连接对象或者连接目标,这个参数包含了主机名,端口,目标库的模式是主库还是从库,与jdbc中的MySQL连接配置异曲同工。其中hm表名连接的是主库,如果是hs则为从库;4000为端口号;后缀为主机名称(内网有配置,直接使用域名)
    4. --default-character-set=utf8 指定编码格式,防止操作过程产生乱码问题
    5. -P4000 指定端口
    6. LBQ 指定数据库
  • 相关阅读:
    Servlet--Request请求对象
    【mockserver】linux服务器搭建 easy-mock,用于挡板或模拟接口返回服务器
    JavaScript之DOM常用属性及方法详解
    嵌入式开发:创建和使用可移植类型的7个技巧
    这份程序员学习路线入门进阶都非常实用,GitHub上3天1W赞!
    jar包不能够直接运行的解决办法
    9月总共面试34次,我人麻了....
    Java中使用alibaba easyexcel导出Excel,合并单元格
    vue3 + vite + ts + setup , 第十七练 vue3 中使用vue-router(一),router跳转传参/嵌套路由/路由重定向/别名
    初识Spring Data JPA
  • 原文地址:https://blog.csdn.net/lbq15735104044/article/details/125431574