递归输入.sql文件作为新数据库

时间:2016-10-03 01:22:47

标签: mysql bash

我有一个包含很多数据库文件的文件夹作为.sql文件。

我想将它们输入到mysql中,新数据库作为文件的名称。

因此,如果文件名为conference_2016.sql,我希望脚本获取该文件并将其内容输入名为:conference_2016的新数据库。

到目前为止,这会将单个文件输入到单个已存在的数据库mysql -u username -p database_name < file.sql

我想要的是一行可以从.sh脚本生成mysql数据库。因为我需要在将文件添加到数据库之前创建数据库,但是无法从脚本中找到解决方法。

1 个答案:

答案 0 :(得分:1)

我认为你可以使用这个脚本:

#!/bin/bash

databases=$(ls *.sql)

for database in ${databases};do
    name=${database%.*}
    mysql -u root -ppassword -e "CREATE DATABASE IF NOT EXISTS ${name} DEFAULT CHARACTER SET utf8;"
    mysql -u root -ppassword ${name} < ${database}
done

这是我的目录结构:

toplevel
├── one.sql
├── test.sh
├── three.sql
└── two.sql

test.sql是上面的bash脚本。 *.sql是您要导入的sql文件。