如何在expect / TCL脚本中从转储文件创建MySQL数据库?

时间:2015-07-06 00:53:45

标签: mysql linux ubuntu tcl expect

我只是想在expect脚本中执行这个bash命令:

mysql -u root -h localhost -proot dbTest < temp.sql

我在开头添加了spawn,但它无效。我认为&#34;&lt;&#34;符号毫无意义!

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

spawn不支持<方向,但您可以这样做:

spawn sh -c "mysql -u root -h localhost -proot dbTest < temp.sql"

似乎您希望以非交互方式运行mysql,以便您也可以使用Expect system命令:

system "mysql -u root -h localhost -proot dbTest < temp.sql"

Tcl&#39; exec命令:

exec mysql -u root -h localhost -proot dbTest < temp.sql >@ stdout 2>@ stderr

如果system失败,您可能需要将整个execcatch命令放在mysql块中:

catch {system "mysql ..."} catched
# or
catch {exec mysql ...} catched

答案 1 :(得分:1)

人们倾向于使用sqldump和mysqldump。我喜欢以下链接中的引用:rubbish与phpmyadmin:

how to import a very large query over phpmyadmin?

关于cronexpect ...

我知道cron在使用日期方面遇到了麻烦,并且通常在命令行中运行的东西必须在bash脚本中推送以便于工作。然后cron运行.sh脚本与嵌入字符串。

从2小时前开始,这是你的重复问题。

答案 2 :(得分:0)

我现在找到了解决这个问题的方法。我避免了“&lt;”符号,所以我们可以改用这个命令:

spawn mysql -u root -h localhost -proot dbTest -Bse "source temp.sql"