zoukankan      html  css  js  c++  java
  • mysql数据库批量执行sql文件对数据库进行操作【windows版本】

    起因: 因工作需要,在本机测试环境升级mysql数据库,需逐条执行mysql数据库的sql文件对数据库进行升级,因此找了些关于mysql的文章,对批量升级数据库所需的sql文件进行升级。

    整理思路

    1. 首先,需要对所需升级的sql所在目录的sql文件进行遍历。生成新的批量执行sql文件。想到是windows系统安装的mysql,首先想到使用bat进行sql文件的生成;
    2. 生成sql文件后,还需要使用bat文件连接到数据库,并使用新生成的sql文件进行升级。
    3. 想到升级的过程中还有可能字符集出现问题,因此需要使用cmd登陆mysql控制台,对编码进行查看。如编码格式不正确,还需调整编码格式。

      因此,需对这些思路进行实践验证。验证后,整理出操作过程,分享给广大猿友。

    实现过程

    • 遍历文件并生成sql文件的 bat脚本文件如下:

      

      @echo off & setlocal EnableDelayedExpansion 
      @set source=.
      for /f "delims=" %%i in ('"dir /a/s/b/on *.sql"') do ( 
        set file=%%~fi 
        set file=!file:/=/! 
        echo .
        echo %source% !file! >> batch.sql
      )
    

     

      将上方的bat脚本,粘贴到txt文件中,并重命名,这里重命名为: creatsql.bat

    • 将creatsql.bat放在sql文件所在目录。执行bat文件后,会得到batch.sql文件。生成的文件内容如下:
    . D:gzkjmysqlpatchScipt4.7.25aa.sql     
    . D:gzkjmysqlpatchScipt4.7.25b.sql     
    . D:gzkjmysqlpatchScipt4.7.25cc.sql     
    . D:gzkjmysqlpatchScipt4.7.25dd.sql     
    . D:gzkjmysqlpatchScipt4.7.25ee.sql     
    . D:gzkjmysqlpatchScipt4.7.25ff.sql     
    . D:gzkjmysqlpatchScipt4.7.25gg.sql     
    . D:gzkjmysqlpatchScipt4.7.25hh.sql     
    . D:gzkjmysqlpatchScipt4.7.25ii.sql  
    • 分析执行文件可能会存在编码格式不正确的问题,因此在CMD窗口执行查看数据库编码格式如下:

      

    •  查看到有字符集编码格式不正确,因此需要调整字符集编码格式,调整的编码格式的配置放在新生成的batch.sql文件内,然后batch.sql文件如下:
    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_results=utf8;
    . D:gzkjmysqlpatchScipt4.7.25aa.sql     
    . D:gzkjmysqlpatchScipt4.7.25b.sql     
    . D:gzkjmysqlpatchScipt4.7.25cc.sql     
    . D:gzkjmysqlpatchScipt4.7.25dd.sql     
    . D:gzkjmysqlpatchScipt4.7.25ee.sql     
    . D:gzkjmysqlpatchScipt4.7.25ff.sql     
    . D:gzkjmysqlpatchScipt4.7.25gg.sql     
    . D:gzkjmysqlpatchScipt4.7.25hh.sql     
    . D:gzkjmysqlpatchScipt4.7.25ii.sql  
    • 最后需要编写升级这些sql所需的bat脚本,脚本如下:
    @echo off
    :: 指定MySQL安装路径
    C:
    cd C:Program FilesMySQLMySQL Server 5.6in
    :: 数据库名称
    @set db=dbname
    :: 用户名
    @set userName=username
    :: 密码
    @set password=aaa123456
    :: 获取文件夹所在绝对路径
    @set basePath=%~dp0
    :: 要执行的sql脚本
    @set sqlpath=%basePath%batch.sql
    :: 连接MySQL数据库并执行sql脚本 -f 脚本执行过程中,出现错误继续执行 --default-character-set指定导入数据的编码(与数据库编码相同)
    mysql -f -u %userName% --password=%password% %db% < %sqlpath% --default-character-set=gbk
    :: 执行完成后,不立刻关闭dos窗口
    pause
    • 将上方bat脚本内容放在txt文件中,重命名,这里重命名为:update.bat,然后将update.bat同样放在sql所在目录下,点击执行update.bat文件,执行结果如下:

      

    • 可以看到,这里有执行报错的信息,证明批量执行是可以的。

      谨以此文分享给大家,相信也能够帮到想要如此操作,却无从下手的同仁们。

  • 相关阅读:
    HDU1029 Ignatius and the Princess IV
    UVA11039 Building designing【排序】
    UVA11039 Building designing【排序】
    POJ3278 HDU2717 Catch That Cow
    POJ3278 HDU2717 Catch That Cow
    POJ1338 Ugly Numbers(解法二)
    POJ1338 Ugly Numbers(解法二)
    UVA532 Dungeon Master
    UVA532 Dungeon Master
    POJ1915 Knight Moves
  • 原文地址:https://www.cnblogs.com/symbol8888/p/12340138.html
Copyright © 2011-2022 走看看