使用mysqldump命令导出文本文件

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-优快云博客

《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-优快云博客

除了使用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”,使用“?”替代了系统默认的“\”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值