MySQL学习——在批处理模式下使用mysql

除了交互式地使用mysql来输入语句并查看结果。也可以以批处理模式运行mysql。为此,将你想要运行的语句放入一个文件中,然后告诉mysql从该文件读取输入:

复制代码
$> mysql < batch-file

如果你在Windows下运行mysql,并且文件中包含一些特殊字符导致问题,你可以尝试以下方法来解决:

复制代码
C:\> mysql -e "source batch-file"

如果你需要在命令行上指定连接参数,命令可能看起来像这样:

复制代码
$> mysql -h host -u user -p < batch-file

Enter password: ********

当你以这种方式使用mysql时,你实际上是创建了一个脚本文件,然后执行这个脚本。

如果你想让脚本即使其中的一些语句产生错误也能继续执行,你应该使用--force命令行选项。

为什么要使用脚本呢?以下是一些原因:

  • 如果你反复运行一个查询(比如说,每天或每周),将其制成脚本可以避免每次执行时都重新输入。

  • 你可以通过复制和编辑脚本文件,从现有的相似查询中生成新的查询。

  • 在你开发查询时,批处理模式也很有用,特别是对于多行语句或多个语句序列。如果你犯了错误,你不需要重新输入所有内容。只需编辑你的脚本来纠正错误,然后告诉mysql再次执行它。

  • 如果你有一个查询会产生大量的输出,你可以让输出通过分页程序,而不是看着它从屏幕顶部滚走:

    $> mysql < batch-file | more

  • 可以将mysql命令的输出重定向到一个文件中,以便后续处理或分析。

    $> mysql < batch-file > mysql.out

  • 你可以将你的脚本分发给其他人,以便他们也能够运行这些语句。

  • 在某些情况下,不允许进行交互式使用,例如,当你从cron作业中运行查询时。在这种情况下,你必须使用批处理模式。

当你在批处理模式下运行mysql时,其默认输出格式与使用交互式时不同(更为简洁)。例如,当你在交互式模式下运行mysql时,SELECT DISTINCT species FROM pet的输出可能看起来像这样:

复制代码
+---------+

| species |

+---------+

| bird    |

| cat     |

| dog     |

| hamster |

| snake   |

+---------+

在批处理模式下,输出看起来会是这样(以纯文本形式,没有表格边框和列标题):

复制代码
species

bird

cat

dog

hamster

snake

如果你想在批处理模式中获得交互式输出格式,可以使用 mysql -t 选项。这个 -t 选项会为输出添加表格框架,使其看起来更加整齐。如果你希望在输出中回显正在执行的语句,可以使用 mysql -v(verbose模式)选项。

另外,你也可以在mysql提示符下使用脚本,通过source命令或者\.命令来执行一个包含SQL语句的文件。例如:

复制代码
mysql> source filename;

mysql> \. filename
相关推荐
utf8mb4安全女神2 分钟前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
lzz的编码时刻13 分钟前
Liquibase 入门实战教程
数据库·运维开发
Zk.Sun20 分钟前
Linux设置触屏双击距离容差
linux·运维·数据库
渣渣灰飞22 分钟前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第二节:WHERE 条件查询
sql·学习·mysql
心中有国也有家38 分钟前
AtomGit Flutter 鸿蒙客户端:E-Brufen 架构设计
学习·flutter·华为·harmonyos
hssfscv1 小时前
QT的学习笔记4——QMainWindow、资源文件以及主要控件的介绍
笔记·qt·学习
山峰哥2 小时前
数据库工程:Explain执行计划对比实战指南‌
数据库·sql·oracle·深度优先·宽度优先
小小的代码里面挖呀挖呀挖2 小时前
杰理蓝牙耳机开发--LE Audio与游戏耳机应用
笔记·单片机·物联网·学习
不知疲倦的仄仄2 小时前
ShardingSphere:高效管理数据库集群的终极方案
sql·mysql·oracle·database
crisps_ww2 小时前
自媒体运营分析-BI可视化仪表盘制作
数据库