我有一个名为'sql'的文件夹,其中包含.sql文件。我想编写一个脚本来搜索所有.sql文件,将文件名放入一个数组中,然后启动每个文件。
即:
#!/bin/bash
# Options
DBHOST=MySQL-hostname
DBNAME=MySQL-database
DBUSER=MySQL-username
DBPASS=MySQL-password
# Find .sql Files
???
# Create MySQL Tables
for i in "${TBNAME[@]}"; do
mysql -h "$DBHOST" -u "$DBUSER" -p"$DBPASS" "$DBNAME" < $TBNAME[$i]
done
如何在指定文件夹中搜索.sql文件?
答案 0 :(得分:1)
for sqlfile in sql/*.sql ; do
# do things to $sqlfile
done
例如,您可以使用echo "$PWD/$sqlfile"
答案 1 :(得分:0)
延迟回收(在接受之后),但记录:
printf "source %s\n" sql/**/*.sql | mysql --batch
为此你需要在~/.bash_profile
行:
shopt -s globstar #or put this before the above line
工作原理:
printf "source %s\n" sql/**/*.sql
生成类似
的行source sql/some/file.sql
source sql/other/file2.sql
#and such...
递归查找所有找到的* .sql文件和
mysql --batch .... other arguments
将读取“源文件名”行 - 并在文件中执行sql命令,一次执行,不需要多次mysql
命令启动(运行)...