电竞比分网-中国电竞赛事及体育赛事平台

分享

mysql數(shù)據(jù)庫(kù)批量執(zhí)行sql文件對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作【windows版本】

 新進(jìn)小設(shè)計(jì) 2022-04-12

起因: 因工作需要,在本機(jī)測(cè)試環(huán)境升級(jí)mysql數(shù)據(jù)庫(kù),需逐條執(zhí)行mysql數(shù)據(jù)庫(kù)的sql文件對(duì)數(shù)據(jù)庫(kù)進(jìn)行升級(jí),因此找了些關(guān)于mysql的文章,對(duì)批量升級(jí)數(shù)據(jù)庫(kù)所需的sql文件進(jìn)行升級(jí)。

整理思路

  1. 首先,需要對(duì)所需升級(jí)的sql所在目錄的sql文件進(jìn)行遍歷。生成新的批量執(zhí)行sql文件。想到是windows系統(tǒng)安裝的mysql,首先想到使用bat進(jìn)行sql文件的生成;
  2. 生成sql文件后,還需要使用bat文件連接到數(shù)據(jù)庫(kù),并使用新生成的sql文件進(jìn)行升級(jí)。
  3. 想到升級(jí)的過(guò)程中還有可能字符集出現(xiàn)問(wèn)題,因此需要使用cmd登陸mysql控制臺(tái),對(duì)編碼進(jìn)行查看。如編碼格式不正確,還需調(diào)整編碼格式。

  因此,需對(duì)這些思路進(jìn)行實(shí)踐驗(yàn)證。驗(yàn)證后,整理出操作過(guò)程,分享給廣大猿友。

實(shí)現(xiàn)過(guò)程

  • 遍歷文件并生成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文件所在目錄。執(zhí)行bat文件后,會(huì)得到batch.sql文件。生成的文件內(nèi)容如下:
\. 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  
  • 分析執(zhí)行文件可能會(huì)存在編碼格式不正確的問(wèn)題,因此在CMD窗口執(zhí)行查看數(shù)據(jù)庫(kù)編碼格式如下:

  

 

 

  •  查看到有字符集編碼格式不正確,因此需要調(diào)整字符集編碼格式,調(diào)整的編碼格式的配置放在新生成的batch.sql文件內(nèi),然后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  
  • 最后需要編寫升級(jí)這些sql所需的bat腳本,腳本如下:
@echo off
:: 指定MySQL安裝路徑
C:
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
:: 數(shù)據(jù)庫(kù)名稱
@set db=dbname
:: 用戶名
@set userName=username
:: 密碼
@set password=aaa123456
:: 獲取文件夾所在絕對(duì)路徑
@set basePath=%~dp0
:: 要執(zhí)行的sql腳本
@set sqlpath=%basePath%\batch.sql
:: 連接MySQL數(shù)據(jù)庫(kù)并執(zhí)行sql腳本 -f 腳本執(zhí)行過(guò)程中,出現(xiàn)錯(cuò)誤繼續(xù)執(zhí)行 --default-character-set指定導(dǎo)入數(shù)據(jù)的編碼(與數(shù)據(jù)庫(kù)編碼相同)
mysql -f -u %userName% --password=%password% %db% < %sqlpath% --default-character-set=gbk
:: 執(zhí)行完成后,不立刻關(guān)閉dos窗口
pause
  • 將上方bat腳本內(nèi)容放在txt文件中,重命名,這里重命名為:update.bat,然后將update.bat同樣放在sql所在目錄下,點(diǎn)擊執(zhí)行update.bat文件,執(zhí)行結(jié)果如下:

  

  • 可以看到,這里有執(zhí)行報(bào)錯(cuò)的信息,證明批量執(zhí)行是可以的。

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

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多