繁体   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