0

我想按顺序执行 unix 目录中的所有 .sqls 。

假设目录名称是 /export/home/me 当我使用它显示的 ls 列出目录中的文件时

a.sql
b.sql
c.sql

现在,我需要编写一个 shell 脚本,它会转到目录并循环遍历目录中的所有 .sql 并按顺序执行它们。请建议

4

2 回答 2

2

如果按顺序排列,您的意思是按字母顺序排序,然后执行此操作,

#!/bin/sh

for i in `ls folder/*.sql | sort ` # I think the shell lists file sorted alphabetically by default
do
    mysql -u user_name -ppassword database_name < i
done

但是,当你执行一个 sql 文件列表时,你需要考虑顺序,例如,如果你的设计是,Employees 和 Departments,那么如果你的第一个 sql 文件创建Employees表,你的第二个sql文件创建Departments 表的 FOREIGN KEY,甚至在执行创建 Departments 表的第三个 sql 文件之前,你就会遇到麻烦。

最好将数据库对象/数据的所有创建/插入语句以正确的顺序放在一个 SQL 文件中。

于 2013-08-26T09:19:49.230 回答
0

假设顺序无关紧要:

#!/bin/sh

for file in folder/*.sql
do
    cat $file #or whatever you want to do with your sql file
done
于 2013-08-26T09:10:35.230 回答