起因: 因作業需要,在本機測驗環境升級mysql資料庫,需逐條執行mysql資料庫的sql檔案對資料庫進行升級,因此找了些關于mysql的文章,對批量升級資料庫所需的sql檔案進行升級,
整理思路:
- 首先,需要對所需升級的sql所在目錄的sql檔案進行遍歷,生成新的批量執行sql檔案,想到是windows系統安裝的mysql,首先想到使用bat進行sql檔案的生成;
- 生成sql檔案后,還需要使用bat檔案連接到資料庫,并使用新生成的sql檔案進行升級,
- 想到升級的程序中還有可能字符集出現問題,因此需要使用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檔案,執行結果如下:

- 可以看到,這里有執行報錯的資訊,證明批量執行是可以的,
謹以此文分享給大家,相信也能夠幫到想要如此操作,卻無從下手的同仁們,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226439.html
標籤:其他
上一篇:從日期獲取年,月或日
