我想按顺序执行 unix 目录中的所有 .sqls 。
假设目录名称是 /export/home/me 当我使用它显示的 ls 列出目录中的文件时
a.sql
b.sql
c.sql
现在,我需要编写一个 shell 脚本,它会转到目录并循环遍历目录中的所有 .sql 并按顺序执行它们。请建议
我想按顺序执行 unix 目录中的所有 .sqls 。
假设目录名称是 /export/home/me 当我使用它显示的 ls 列出目录中的文件时
a.sql
b.sql
c.sql
现在,我需要编写一个 shell 脚本,它会转到目录并循环遍历目录中的所有 .sql 并按顺序执行它们。请建议
如果按顺序排列,您的意思是按字母顺序排序,然后执行此操作,
#!/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 文件中。
假设顺序无关紧要:
#!/bin/sh
for file in folder/*.sql
do
cat $file #or whatever you want to do with your sql file
done