[英]Bash script to Import Multiple Databses using Loop
我有一個包含許多DB.sql.gz文件的文件夾,我想一次將它們全部導入到新安裝的MySQL Server中。
我認為使用bash腳本是一個好主意。
到目前為止,我已經將此文件作為可執行文件。
#!/bin/sh
for filename in *.gz;
do
tempfile="${z##*/}";
database_name = "${tempfile%.*}";
echo database_name;
mysql -pPASS -u USER;
CREATE DATABASE database_name;
unzip z | mysql -pPASS -uUSER database_name;
done
出問題的是,在for循環中使用“文件名”時,我無法通過字符串操作來刪除擴展名,我想這樣做是因為數據庫文件被命名為數據庫。 (只想刪除.sql.gz以獲取數據庫名稱)
感謝幫助
#!/bin/sh
for filename in *.gz;
do
tempfile="${filename##*/}"
database_name="${tempfile%%.*}"
echo $database_name
mysql -pPASS -u USER -e "CREATE DATABASE $database_name"
gzcat $filename | mysql -pPASS -uUSER $database_name
done
$z
應該是$filename
。 =
周圍沒有空格 $
。 CREATE DATABASE
命令,請對mysql
使用-e
選項 gzcat
將.gz
文件擴展到stdout。 ${tempfile%.*}
應該是${tempfile%%.*}
。 %
刪除圖案的最短匹配項, %%
刪除最長的匹配項。 這將刪除所有后綴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.