我有一个包含许多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以获取数据库名称)
帮助表示赞赏
答案 0 :(得分:1)
#!/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
命令,请使用-e
选项mysql
gzcat
将.gz
文件展开为stdout。${tempfile%.*}
应为${tempfile%%.*}
。 %
删除模式的最短匹配,%%
删除最长匹配。这将删除所有后缀。