[英]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.