如何将MySQL查询输出保存到文件?

时间:2020-02-23 14:41:03  来源:igfitidea点击:

我们可以使用MySQL outfile语句将查询输出保存到文件中。
当查询结果很大并且您想通过将其导出到文件中进行分析时,这非常有用。

MySQL Outfile语句语法

outfile语法非常简单。
它应该是SQL查询的最后一部分。

{SQL Query} into outfile '{file_path}';

SQL查询输出将以文本格式保存到文件中。

将MySQL查询输出保存到文件

我们来看一些将MySQL查询输出保存到文件中的示例。

MariaDB [theitroad_wp]> select * from ahm_files into outfile '/tmp/ahm_files_data.txt';
Query OK, 270 rows affected (0.00 sec)

MariaDB [theitroad_wp]>

输出将被重定向到文件。
它没有在MySQL控制台上打印。

如果打开文件,您将看到SQL查询数据另存为制表符分隔。

让我们运行另一个查询,该查询产生的输出很小,并将控制台输出与文件内容进行比较。

MariaDB [theitroad_wp]> select id, title, access from ahm_files limit 5;
+----+--------------------------------------+--------+
| id | title                                | access |
+----+--------------------------------------+--------+
|  1 | Hibernate Log4j Project              | guest  |
|  2 | Hibernate EHCache Project            | guest  |
|  3 | Hibernate HQL Project                | guest  |
|  4 | Hibernate ManyToMany Mapping Project | guest  |
|  5 | Hibernate OneToMany Mapping Project  | guest  |
+----+--------------------------------------+--------+
5 rows in set (0.00 sec)

MariaDB [theitroad_wp]> 

错误情况

MySQL用户应具有在指定路径上创建文件的权限。

MariaDB [theitroad_wp]> select * from wp_posts into outfile '/root/wp_posts_data.txt';
ERROR 1 (HY000): Can't create/write to file '/root/wp_posts_data.txt' (Errcode: 13 "Permission denied")
MariaDB [theitroad_wp]>

如果文件已经存在,则MySQL查询将不会重写或者追加到该文件。
由于文件已经存在,它只会引发错误。

MariaDB [theitroad_wp]> select * from ahm_files into outfile '/tmp/ahm_files_partial_data.txt';
ERROR 1086 (HY000): File '/tmp/ahm_files_partial_data.txt' already exists
MariaDB [theitroad_wp]>