2013-08-26 118 views
0

我想依次执行unix目录中的所有.sqls。UNIX顺序执行文件

假设目录名称/导出/家/我 当我列出使用LS 在目录中的文件也显示

a.sql 
b.sql 
c.sql 

现在,我需要写一个shell脚本,它会去目录遍历目录中的所有.sqls并依次执行它们。请建议

+3

按顺序是什么意思?执行顺序是否重要?你如何确定这个订单? –

+0

我将在目录中创建单独的文件夹,以便在directiry/export/home/me中执行.sqls.suppose。我创建三个子目录ddl dml validation.Now每个这些子文件夹都将包含n个数字.sqls.hence,我需要循环通过提到的目录中的所有子目录,然后执行所有.sqls.Please建议 – user2717470

回答

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,那么即使在执行创建Departments表的第三个sql文件之前,如果第一个sql文件创建Employees表并且第二个sql文件创建了FOREIGN KEY到Departments表,那么您将遇到麻烦。

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

+0

谢谢....但是你说什么是至关重要的。因此,假设我创建单独的文件夹在目录为假设为ddls和dmls etcs .how我然后顺序执行所有.sqls在每个文件夹中顺序。请建议并再次感谢您的以前的建议 – user2717470

0

假设顺序并不重要:

#!/bin/sh 

for file in folder/*.sql 
do 
    cat $file #or whatever you want to do with your sql file 
done