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

How to create a MySQL database from dump file in expect/TCL script?

我只想在 expect 脚本中执行此 bash 命令:

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

我在开头添加了 spawn,但它不起作用。我认为“<”符号没有任何意义!

谁能帮我解决这个问题?

人们倾向于使用sqldump 和mysqldump。我喜欢下面 link 中的引述 rubbish with phpmyadmin:

how to import a very large query over phpmyadmin?

关于 cronexpect ...

我知道 cron 在处理日期时遇到问题,而且通常在命令行上起作用的东西必须放在 bash 脚本中才能更轻松地工作。然后 cron 运行 .sh 脚本与嵌入字符串。

这也是你 2 小时前的重复问题。

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

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

似乎您想以非交互方式 运行 mysql,因此您也可以使用 Expectsystem 命令:

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

Tclexec命令:

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

您可能需要将整个 systemexec 命令放在 catch 块中,以防 mysql 失败:

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

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

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