使用mysqldump命令导出文本文件

来源:这里教程网 时间:2026-03-01 18:28:22 作者:

除了使用SELECT… INTO OUTFILE 语句导出文本文件之外,还可以使用mysqldump 命令。11.1 节开始介绍了使用mysqldump 备份数据库,该工具不仅可以将数据导出为包含CREATE INSERT sql 文件,也可以导出为纯文本文件。mysqldump 创建一个包含创建表的CREATE TABLE 语句的tablename.sql 文件和一个包含其数据的tablename.txt 文件。mysqldump 导出文本文件的基本语法格式如下:

mysqldump -T path -u root -p dbname [tables] [OPTIONS]

只有指定了-T 参数才可以导出纯文本文件;path 表示导出数据的目录;tables 为指定要导出的表名称,如果不指定,将导出数据库dbname 中所有的表;[OPTIONS] 为可选参数选项,这些选项需要结合-T 选项使用。OPTIONS 常见的取值有: —   --fields-terminated-by=value :设置字段之间的分隔字符,可以为单个或多个字符,默认情况下为制表符(\t )。 —   --fields-enclosed-by=value :设置字段的包围字符。 —   --fields-optionally-enclosed-by=value :设置字段的包围字符,只能为单个字符,只能包括CHAR VERCHAR 等字符数据字段。 —   --fields-escaped-by=value :控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为\ —   --lines-terminated-by=value :设置每行数据结尾的字符,可以为单个或多个字符,默认值为“\n ”。

 注意: 这里的OPTIONS 的设置与SELECT INTO OUTFILE 语句中的OPTIONS 不同,各个取值中等号后面的value 值不要用引号括起来。 【例 11.13 使用mysqldump test_db 数据库person 表中的记录导出到文本文件,SQL 语句如下: mysqldump -T D:\ test _ db person -u root -p 语句执行成功,系统D 盘目录下面将会有两个文件,分别为person.sql person.txt person.sql 包含创建person 表的CREATE 语句,其内容如下:

-- MySQL dump 10.13  Distrib 9.0.1, for Win64 (x86_64)
--
-- Host: localhost    Database: test_db
-- ------------------------------------------------------
-- Server version    9.0.1
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 SET NAMES utf8mb4 ;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 
--
-- Table structure for table `person`
--
 
DROP TABLE IF EXISTS `person`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `person` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` char(40) NOT NULL DEFAULT '',
  `age` int(11) NOT NULL DEFAULT '0',
  `info` char(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
 
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
-- Dump completed on 2024-07-25 16:40:55

备份文件中的信息已在11.1.1 节中介绍了。person.txt 包含数据包中的数据,其内容如下:

1   Green       21      Lawyer
2   Suse         22      dancer
3   Mary         24      Musician
4   Willam      20      sports man
5   Laura       25      \N
6   Evans       27      secretary
7   Dale         22      cook
8   Edison      28      singer
9   Harry       21      magician
10  Harriet     19      pianist

【例 11.14 使用mysqldump 命令将test_db 数据库中的person 表中的记录导出到文本文件,使用FIELDS 选项,要求字段之间使用逗号“, ”间隔,所有字符类型字段值用双引号引起来,定义转义字符为“? ”,每行记录以“\r\n ”结尾,SQL 语句如下: mysqldump -T D:\ test _ db person -u root -p --fields-terminated-by=, --fields-optionally-enclosed-by=\" --fields-escaped-by=? --lines-terminated-by=\r\n Enter password: ****** 上面语句要在一行中输入,语句执行成功后,系统D 盘目录下面将会有两个文件,分别为person.sql person.txt person.sql 包含创建person 表的CREATE 语句,其内容与【例11.13 】中的相同;person.txt 文件的内容与【例11.13 】中的不同,显示如下:

1,"Green",21,"Lawyer"
2,"Suse",22,"dancer"
3,"Mary",24,"Musician"
4,"Willam",20,"sports man"
5,"Laura",25,?N
6,"Evans",27,"secretary"
7,"Dale",22,"cook"
8,"Edison",28,"singer"
9,"Harry",21,"magician"
10,"Harriet",19,"pianist"

以看到,只有字符类型的值被双引号引起来了,而数值类型的值没有;第5 行记录中的NULL 表示为“?N ”,使用“? ”替代了系统默认的“\ ”。

相关推荐