我想在unix中的目录中顺序执行所有.sqls。
假设目录名是/ export / home / me 当我使用ls列出目录中的文件时 它显示
a.sql
b.sql
c.sql
现在,我需要编写一个shell脚本,它将转到目录并遍历目录中的所有.sqls并按顺序执行它们。请建议
答案 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