MySQL批量操作模式详解

发表时间: 2024-03-20 22:47

原文

MySQL :: MySQL 5.7 Reference Manual :: 3.5 Using mysql in Batch Mode

中文翻译

在上个章节中,你使用mysql交互模式输入语句和查看结果。你也可以在批处理模式下使用mysql。你可以把需要执行的语句放入到脚本文件中,然后把它作为mysql的输入:

$> mysql < batch-file

如果你的脚本文件中存在一些特殊字符,在命令行窗口下执行会出现异常,你可以这么解决:

C:\> mysql -e "source batch-file"

如果你想连接到指定数据库,可以这么写命令:

$> mysql -h host -u user -p < batch-fileEnter password: ********

你可以创建脚本文件,按照上述方式去执行它即可。

当你的脚本执行出错时,仍然想让它继续执行,你可以使用--force选项。

为什么要使用脚本呢?这里有几个原因:

  • 如果你需要周期性(如每天或每周)的做查询工作,把查询语句写入脚本中就可以避免每次执行时都要重新再敲一遍。
  • 你可以拷贝现有的脚本文件,然后在其基础上做修改生成一份新的脚本文件。
  • 在你开发一个查询功能,特别是涉及到多条语句或语句之间有强烈的顺序要求时,批处理模式很有帮助。如果功能有问题,你就不用经常去敲敲打打。只需要调整脚本,修复错误,然后告诉mysql执行即可。
  • 如果你的查询会产生很多输出,你可以通过翻页而不用看着你的屏幕一直在滚动:
$> mysql < batch-file | more
  • 你还可以将输出重定向文件中用于后期处理:
$> mysql < batch-file > mysql.out
  • 你可以将脚本文件分享给其他人,让他们可以执行。
  • 当你在定时任务中运行一个查询功能,交互模式没法使用,这时候只能使用批处理模式。

默认情况下,批处理模式的输出样式要比交互模式简洁。比如在交互模式下,执行SELECT DISTINCT species FROM pet,它的输出像这样:

+---------+| species |+---------+| bird    || cat     || dog     || hamster || snake   |+---------+

批处理模式下,它的输出是这样的:

speciesbirdcatdoghamstersnake

如果你想在交互模式下获得交互模式输出样式,可以使用-t选项。如果想把语句也输出,可以使用-v选项

你也可以在mysql shell窗口中使用source或\.命令执行脚本

mysql> source filename;mysql> \. filename