我想编写一个 cron 作业来插入 6 个表。我知道:
- 表格会一直存在,并且会是空的,等待记录
- 我将在服务器上准备好 6 个 .sql 转储文件,以供导入。
- 文件的格式与 phpMyAdmin 导出工具创建的完全相同
即所有已经有一个 INSERT INTO
tablename
行和多个带括号的值行。 - 所有外键约束都在插入语句之前设置为关闭,并在插入之后再次打开。
我想在 PHP 中完成所有操作,但在共享主机上,exec() 函数被禁用,FILES 权限也是如此,所以我的选择越来越少。
我正在寻找一种通过 cPanel cron 或 cPanel 中的 SSH 工具执行上述操作的方法。 CRON 将是我的首选,因为我不熟悉 SSH。
我是将这一行运行 6 次(针对每个文件)还是可以将它合并到一个 cron 或 ssh 命令中?附:我还使用 .sql 转储文件的绝对路径还是相对路径
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-1.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-2.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-3.sql'
mysql -h ... etc ...
谢谢
最佳答案
您可以创建一个位于/home/youruser/的 task.sh
文件,您可以在其中放入以下内容:
#!/bin/bash
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-1.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-2.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-3.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-4.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-5.sql'
mysql -h localhost -u myusername -p mypassword mycatalogdb < 'sqlcronfiles/dump-6.sql'
然后,要执行此 cron,您可以从 cPanel 创建一个 Cronjob,根据需要配置时间,它应该执行的命令是:
/home/youruser/task.sh
你就完成了。 希望对你有用
关于mysql - 我如何每天通过cron或ssh导入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992745/