迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

MySQL 定时任务

作者:迹忆客 最近更新:2023/04/19 浏览次数:

本文的主要目的是演示如何安排一个用 MySQL 编写的查询,并使用 Cron Jobs 在固定的时间后执行它。


MySQL 定时任务

在处理大量数据时,可能会重复执行某个任务。

它可以是任何东西,取决于任务的上下文; 示例包括在一定数量后从表中删除条目或通过将数据库副本保存在本地计算机上进行定时备份 - 可能性是无限的。

考虑下表:

+------+---------------+-------------+----------------------+------------+
| ID   | Name          | CountryCode | District             | Population |
+------+---------------+-------------+----------------------+------------+
|    1 | Kabul         | AFG         | Kabol                |    1780000 |
|    2 | Qandahar      | AFG         | Qandahar             |     237500 |
|    3 | Herat         | AFG         | Herat                |     186800 |
|    4 | Mazar-e-Sharif| AFG         | Balkh                |     127800 |
|    5 | Amsterdam     | NLD         | Noord-Holland        |     731200 |
|    . | . . . . . . . | . . . . . . | . . . . . . . . . .  |  . . . . . |
|    . | . . . . . . . | . . .  < OUTPUT REDACTED >  . . .  |  . . . . . |
|    . | . . . . . . . | . . . . . . | . . . . . . . . . .  |  . . . . . |
| 4075 | Khan Yunis    | PSE         | Khan Yunis           |     123175 |
| 4076 | Hebron        | PSE         | Hebron               |     119401 |
| 4077 | Jabaliya      | PSE         | North Gaza           |     113901 |
| 4078 | Nablus        | PSE         | Nablus               |     100231 |
| 4079 | Rafah         | PSE         | Rafah                |      92020 |
+------+---------------+-------------+----------------------+------------+

为了简单起见,我们假设下表存储了全球各个城市的数据,并定期更新; 这种情况要求在定期更新表之前在本地计算机上存在表备份。

为此,我们可以使用 cron 作业来运行查询,从而定期对表进行备份。 让我们看看如何使用 cron 作业来实现这一目标。


备份表

在跳转到计划部分之前,让我们创建允许我们备份此特定表的查询。

考虑以下查询:

mysql --user=[user] --password=[pass] --database=world --execute="SELECT * from world.city INTO OUTFILE 'D:\\a.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n'"

以下是查询中发生的事情的概要:

  1. mysql - 执行以访问数据库的 MySQL 二进制文件
  2. --user=[用户 - 用户名
  3. --password=[pass] - 密码
  4. --database=world - 要访问和处理的数据库名称,在本例中为 world
  5. --execute="..." - 要执行的查询
    • Select * from world.city* - 从数据库名称 world 中存在的表 world 中选择所有条目。
    • INTO OUTFILE 'PATH.csv' - 将查询结果写入提到的文件。
    • FIELDS TERMINATED BY ',' - 用逗号终止每个字段(对于类似 CSV 的结构)
    • ENCLOSED BY '' - 用 '' 将每个字段括起来
    • LINES TERMINATED BY '\n' - 用换行符终止每一行

将此查询保存在您首选位置的某个位置,格式最好是 .sh。

现在我们已经创建了查询,我们可以继续将查询作为计划任务来实现。


创建 Cron 作业

在创建计划查询之前,让我们看一下 cron 作业的一般语法。

一般语法如下。

a b c d e /path/script result
  1. a、b、c、d 和 e 指定作业的时间、日期和重复周期。
  2. /path/script 指定需要执行的脚本
  3. 结果指定如何通知用户作业完成(可选)

Cron 作业的时间格式

让我们看一下 cron 作业遵循的时间格式。

  1. [a] - 代表一分钟,范围在 0 到 59 之间
  2. [b] - 代表一个小时,范围在 0 到 23 之间
  3. [c] - 代表天,范围在 0 到 31 之间
  4. [d] - 代表一个月,范围在 0(无)和 12(十二月)之间
  5. [e] - 代表星期几,范围在 0(无)和 7(星期日)之间

设置 Cron 作业

要创建 cron 作业,请使用您喜欢的文本编辑器打开 crontab 配置文件。

要打开配置文件,请在终端中写入以下内容:

crontab -e

并在那里添加你的工作; 在我们的例子中,语法如下:

0 7 * * * /tmp/back.sh

上面的 cron 作业将在每天早上 7 点运行,创建城市表的备份并将其保存在所需位置。

添加 cron 作业后,保存文件即可完成!

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便