【问题标题】:How do i import into mysql daily via cron or ssh我如何每天通过 cron 或 ssh 导入 mysql
【发布时间】:2018-01-13 05:44:13
【问题描述】:

我想为 INSERT INTO 6 个表编写一个 cron 作业。我知道:

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

我想在 PHP 中做所有事情,但在共享主机上 exec() 函数被禁用,文件特权也是如此,所以我的选择越来越少。

我正在寻找一种通过 cPanel cron 或 cPanel 中的 SSH 工具执行上述操作的方法。 CRON 将是我的首选,因为我不熟悉 SSH。

我是否将这一行运行 6 次(针对每个文件),还是可以将其合并到一个 cron 或 ssh 命令中? p.s.我也使用.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 ...

谢谢

【问题讨论】:

  • 等等....你用一个文件测试了 cron 并且它工作正常吗??
  • 不,没有这样做,因为我毫不怀疑它会以一种或另一种方式导入 - 我更关心如何在不锁定服务器并创建大量文件的情况下使用 6 个文件开销
  • 从简单的东西开始,然后移到更大的东西...尝试使用一个文件,看看 cron 是否被执行,并填充数据库...当您完成该过程时,没有错误,然后转到这些替代方案之一stackoverflow.com/questions/4708013/…

标签: mysql cron


【解决方案1】:

您可以创建一个位于 /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

你就完成了。 希望对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-03
    • 2019-02-17
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多