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:\gzkj\mysql\patchScipt\4.7.25\aa.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\bb.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\cc.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\dd.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\ee.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\ff.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\gg.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\hh.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\ii.sql  
  • 分析執行文件可能會存在編碼格式不正確的問題,因此在CMD窗口執行查看數據庫編碼格式如下:

  

 

 

  •  查看到有字符集編碼格式不正確,因此需要調整字符集編碼格式,調整的編碼格式的配置放在新生成的batch.sql文件內,然后batch.sql文件如下:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
\. D:\gzkj\mysql\patchScipt\4.7.25\aa.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\bb.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\cc.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\dd.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\ee.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\ff.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\gg.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\hh.sql     
\. D:\gzkj\mysql\patchScipt\4.7.25\ii.sql  
  • 最后需要編寫升級這些sql所需的bat腳本,腳本如下:
@echo off
:: 指定MySQL安裝路徑
C:
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
:: 數據庫名稱
@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文件,執行結果如下:

  

  • 可以看到,這里有執行報錯的信息,證明批量執行是可以的。

  謹以此文分享給大家,相信也能夠幫到想要如此操作,卻無從下手的同仁們。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM