在 MySQL 8 服务器社区中,可以执行MySQL Shell
以下命令导出 SQL 查询的输出(最基本的):
SELECT * FROM cientifico INTO OUTFILE '/var/lib/mysql-files/cientifico-data.txt';
并且它按预期工作
但对于非 SQL 查询如下:
SHOW PROCESSLIST INTO OUTFILE '/var/lib/mysql-files/processlist.txt';
引发以下错误
错误 1064 (42000):您的 SQL 语法有错误;请查阅与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行附近“INTO OUTFILE '/var/lib/mysql-files/processlist.txt'”使用的正确语法
相同于:
SHOW DATABASES INTO OUTFILE '/var/lib/mysql-files/databases.txt';
给予
错误 1064 (42000):您的 SQL 语法有错误;请查阅与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行附近“INTO OUTFILE '/var/lib/mysql-files/databases.txt'”使用的正确语法
因此如果可能的话
问题
- 如何导出非 SQL 查询语句的输出?
我假设该INTO OUTFILE
语法仅适用于 SQL 语句,但对于非 SQL 语句呢?
SHOW
不能与语法结合使用。只能将子句与一起INTO OUTFILE
使用。INTO OUTFILE
SELECT
PERFORMANCE_SCHEMA.PROCESSLIST
您可以使用进行查询SELECT
,这使您有机会捕获输出。或者,您可以用自己喜欢的语言开发自己的客户端代码,用于获取命令的结果
SHOW
,然后自行将结果保存到文件中。如果您需要对格式进行特殊处理,例如制表符和逗号,则必须自行编写代码。不过,在循环中将文本行写入文件并不是一项复杂的编程任务。mysql
将任何输出放入文件的最简单方法是mysql
使用批处理模式:如果您想解析输出,抑制一些视觉增强功能会很有用: