gpt4 book ai didi

mysql - 使用循环导入多个数据库的 Bash 脚本

转载 作者:行者123 更新时间:2023-11-29 12:37:45 24 4
gpt4 key购买 nike

我有一个文件夹,里面有很多 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 循环中获取“文件名”时,我无法字符串操纵 to 来删除扩展名,我想这样做,因为数据库文件被命名为数据库。 (只想删除 .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%%.*}% 删除模式的最短匹配,%% 删除最长的匹配。这将删除所有后缀。

关于mysql - 使用循环导入多个数据库的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26522142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com