mysql - 我如何每天通过cron或ssh导入mysql

标签 mysql cron

我想编写一个 cron 作业来插入 6 个表。我知道:

  1. 表格会一直存在,并且会是空的,等待记录
  2. 我将在服务器上准备好 6 个 .sql 转储文件,以供导入。
  3. 文件的格式与 phpMyAdmin 导出工具创建的完全相同 即所有已经有一个 INSERT INTO tablename 行和多个带括号的值行。
  4. 所有外键约束都在插入语句之前设置为关闭,并在插入之后再次打开。

我想在 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/

相关文章:

php - 获取两个日期之间所有星期日的日期PHP Mysql

php - 插入和选择嵌套查询中的 SQL 语法错误

linux - 使用 cron 备份文件时的不同时间戳

php - 仅运行脚本一次,持续 5 分钟 (Linux)

php - Cron 作业和顶级域

python - Crontab 不适用于 python

php - 将 SQL 数据库中的数据显示到 php/html 表中

php - 数据不粘在用户个人资料上

php - mysqli_fetch_assoc 返回为 foreach() 提供的参数无效

php - 根据另一个表的条件更新表