背景
從一個資料庫中匯出了 N 個表的 SQL 陳述句,匯總到一個檔案夾下,然后,再匯入到目標資料庫中,這個程序中,如果逐個敲 source 命令太繁瑣了,不如寫個腳本來搞定、順便練練手,
本文將介紹一個遍歷檔案夾下檔案的 Shell 應用,
腳本撰寫
批量匯入目標檔案夾下的 SQL 檔案,核心是,得到目錄下所有 SQL 檔案的名稱,回圈執行匯入陳述句,
所以,一個 ls 命令就搞定了,
curDir=$1
cd $curDir
echo 'Start import .sql file in directory '$curDir
fileTmp=`ls`
fileNames=($(echo $fileTmp))
for fileName in ${fileNames[@]}
do
echo 'current file '$fileName
mysql -h localhost -uroot -p123456 < ./$fileName
echo ''
done
echo 'Finished import .sql file.'
腳本分析
ls命令輸入所有的檔案名稱;- 用
$ 命令按空格拆分,將ls的輸出值拆分成陣列; ${陣列名[@]}將陣列擴展成串列,用for in遍歷,
命令分解輸出示例:

啟示錄
值得注意的是,SQL 陳述句如果是插入操作,必須使用 use database; 指定目標資料庫,
其實也就選擇地匯出了 8 張表的 SQL 陳述句,逐個敲檔案名也不是個事兒,這也是最簡單的處理方法,但是這不符合好開發解決問題的風格啊,就是一個遍歷檔案名的命令,網上沒找到現成的腳本,就自己寫一個!
寫腳本也花了十分鐘,但好歹比復制粘貼檔案名有技術含量得多,順便也練習了一下 Shell 陣列的語法,再說了,腳本到了運維同事手里,說不定會暗自夸這腳本的作者貼心呢!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205121.html
標籤:其他
上一篇:LeetCode--1398. 購買了產品A和產品B卻沒有購買產品C的顧客
下一篇:Mybatis框架基礎-03
