UNIX顺序执行文件

时间:2013-08-26 09:06:09

标签: unix

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

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

a.sql
b.sql
c.sql

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

2 个答案:

答案 0 :(得分: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文件创建FOREIGN KEY to Departments表,甚至在执行创建Departments表的第三个sql文件之前,你就会遇到麻烦。

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

答案 1 :(得分:0)

假设订单无关紧要:

#!/bin/sh

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