簡體   English   中英

Bash腳本使用循環導入多個數據庫

[英]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
  1. $z應該是$filename
  2. 作業中=周圍沒有空格
  3. 在多次使用變量之前,您缺少$
  4. 若要執行CREATE DATABASE命令,請對mysql使用-e選項
  5. 使用gzcat.gz文件擴展到stdout。
  6. ${tempfile%.*}應該是${tempfile%%.*} %刪除圖案的最短匹配項, %%刪除最長的匹配項。 這將刪除所有后綴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM