一尘不染

从shell导入多个.sql转储文件到mysql数据库

linux

我有一个包含一堆.sql文件的目录,这些文件由mysql转储到服务器上的每个数据库。

例如

database1-2011-01-15.sql
database2-2011-01-15.sql
...

实际上有很多。

我需要创建一个shell脚本或单行,可能会导入每个数据库。

我在Linux Debian机器上运行。

我认为有某种方法可以将ls的结果传递到一些find命令或其他内容中。

非常感谢任何帮助和教育。

编辑

所以最终我想一次自动将一个文件导入数据库。

例如,如果我手动执行一项操作,它将是:

mysql -u root -ppassword < database1-2011-01-15.sql

阅读 252

收藏
2020-06-03

共1个答案

一尘不染

cat *.sql | mysql?您是否需要任何特定的顺序?

如果您有太多方法无法处理,请尝试以下方法:

find . -name '*.sql' | awk '{ print "source",$0 }' | mysql --batch

尽管通过Linux在管道处理中应该没有问题,但通过管道传递脚本输入也解决了一些问题。这种方法的好处是mysql实用程序读取每个文件,而不是从中读取文件stdin

2020-06-03