MySQL——表的导出和导入

article/2025/8/22 7:14:13

有时会需要将MySQL数据4中的数据导出到外部存储文件中,MySQL数据库中的数据可以导出成qI文本文件、xml文件或者html文件,同样这些导出的文件也可以导入MySQL数据库中,

一.  表的导出

1.   用  SELECT…INTO OUTFILE  导出文本文件

      在  MySQL  数据库中导出数据时,允许使用包含导出定义的  SELECT  语句进行数据的导出操作。该文件在服务器主机上创建,因此必须拥有文件写入权限  (FILE权限),才能使用此语法。“SELECT...INTO   OUTFILE   'filename'  "   形式的  SELECT语句可以把被选择的行写入一个文件中,filename 不能是一个已经存在的文件。SELECT...INTO OUTFILE  语句的基本格式如下:

SELECT   columnlist   FROM   table   WHERE   condition    INTO   OUTFILE   'filename'   [OPTION]

--OPTIONS 选项
   FIELDS   TERMINATED   BY   'value'   
  FIELDS   [OPTIONALLY]    ENCLOSED   BY   'value'   
  FIELDS   ESCAPED   BY   'value'   
  LINES   STARTING   BY   'value'     
  LINES   TERMINATED   BY   'value'   
 

    SELECT   columnlist  FROM   table   WHERE   condition  为查询语句,查询结果返回满足指定条件的一条或多条记录;INTO OUTFLE 语句的作用就是把  SELECT  语句查询出来的结果导出到名称为  filename  的外部文件中,[OPTIONS] 为可选参数选项,OPTIONS  部分的语法包括  FIELDS  和  LINES  子句。

  •     FIELDS  TERMINATED  BY    'value'  设置字段之间的分隔符可以为单个或多个字符,默认情况下为制表符“\t”。
  •     FIELDS   [OPTIONALLY]  ENCLOSED   BY   'value'   设置字段的包围字符,只能为单个字符,如果使用了OPTIONALLY  则只包括  CHAR  和  VARCHAR  等字符数据字段。
  •     FIELDS   ESCAPED   BY   'value'   设置如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为“\”。
  •     LINES   STARTING   BY   'value'    设置每行数据开头的字符,可以为单个或多个字符,默认情况下不使用任何字符。
  •     LINES   TERMINATED   BY   'value'   设置每行数据结尾的字符,可以为单个或多个字符,默认值为“\n”。

    FIELDS   和  LINES  两个子句都是自选的,但是如果两个都被指定了,FIELDS  必须位于  LINES  的前面。

    SELECT...INTO   OUTFILE   语句可以非常快速地把一个表转储到服务器上。如果想要在服务器主机之外的部分客户主机上创建结果文件,不能使用  SELECT...INTO   OUTFILE  语句。在这种情况下,应该在客户主机上使用  mysql  -e  “SELECT  ... "  >  file_name  这样的命令,来生成文件。

    【例】使用  SELECT...INTO   OUTFILE  语句将  test_db 数据库中的  fruits  表中的记录导出到文本文件。输入的语句如下:

mysql> SELECT  *  FROM   test_db.fruits   INTO   OUTFILE   "G:/fruits0.txt";
Query OK, 16 rows affected (0.11 sec)

执行结果:

                        


    可以看到默认情况下,MySQL  使用制表符“\t”分隔不同的字段,字段没有用其他字符括起来。Windows系统下的回车换行为“\r\n”,默认换行符为“\n”。

    默认情况下,如果遇到  NULL  值,将会返回“\N”代表空值,反斜线“\”表示转义字符。如果使用  ESCAPED BY  选项,则N前面为指定的转义字符。

    【例】使用  SELECT...INTO   OUTFILE  语句将  test_db 数据库中的  fruits  表中的记录导出到文本文件,使用FIELDS   和  LINES 选项,要求字段之间使用逗号隔开,所有字段值用双引号括起来,定义转义字符为单引号“\'”。

    输入语句如下:

mysql> SELECT  *  FROM   test_db.person   INTO   OUTFILE   "G:/person1.txt"->   FIELDS->     TERMINATED BY ','->     ENCLOSED BY '\"'->     ESCAPED BY '\''->   LINES->     TERMINATED BY '\r\n';
Query OK, 0 rows affected (0.01 sec)

执行结果:                                          

                                          


2.  用  mysqldump  命令导出文本文件

    使用  mysqldump 工具不仅可以将数据导出为包含  CREATE、INSERT 的  sql  文件,也可以导出为纯文本文件。

    Mysqldump  将创建一个包含  CREATE TABLE  语句的  tablename.sql  文件和一个包含其数据的  tablename.txt  文件。    

    mysqldump 导出文本文件的基本语法格式如下:

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

    --OPTION 选项
    --fields-terminated-by=value
    --fields-enclosed-by=value
    --fields-optionally-enclosed-by=value
    --fields-escaped-by=value
    --lines-terminated-by=value

    只有指定了 -T  参数才可以导出纯文本文件;path  表示导出数据的目录;tables  为指定要导出的表名,如果不指定,将导出数据库  dbname  中所有的表; [ OPTIONS]  为可选参数选项,这些选项需要结合-T 选项使用。

    OPTIONS 常见的取值如下:

  •     --fields-terminated-by=value:  设置字段之间的分隔符可以为单个或多个字符,默认情况下为制表符“\t”。
  •     --fields-enclosed-by=value:   设置字段的包围字符。
  •     --fields-optionally-enclosed-by=value: 设置字段的包围字符,只能为单个字符,包括  CHAR  和  VARCHAR  等字符数据字段。
  •     --fields-escaped-by=value: 控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为“\”。
  •     --lines-terminated-by=value: 设置每行数据结尾的字符,可以为单个或多个字符,默认值为“\n”。


    【例】 使用 mysqldump  命令将  test_db  数据库中的 person 表中的记录导出到文本文件。使用  FIELDS  选项,要求字段之间使用逗号(,)间隔,所有字符类型字段值用双引号括起来,定义转义字符为问号(?),每行记录以回车换行符“\r\n”结尾。

    SQL  命令入下:

C:\>mysqldump -T  G:\  -u  root  -p  test_db  fruits  --fields-terminated-by=,  --fields-optionally-enclosed-by=\"  
--fields-escaped-by=?  --lines-terminated-by=\r\n
Enter password: *************

    【注】语句后没分号。

fruits.txt  包含数据包中的数据:

                        


3.  用  mysql  命令导出文本文件

    相比mysqldump,mysql工具导出的结果可读性更强。

    使用  mysql  导出数据文本文件语句的基本格式:

    mysql   -u   root   -p   --execute= "SELECT 语句"   dbname   >filename.txt

    -execute  选项表示执行该选项后面的语句并退出,后面的语句必须用双引号括起来,dbname  为要导出的数据库名称;导出的文件中不同列之间使用制表符分隔,第1行包含各字段的名称。

    【例】使用 mysql 命令,将  test_db  数据库中  fruits  表中的记录导出到文本文件。

    执行的命令如下:

C:\>mysql  -u root  -p  --execute="SELECT  *  FROM  fruits;"  test_db  > G:\fruits3.txt
Enter password: *************

C:\>mysql  -u root  -p  --execute="SELECT  *  FROM test_db.fruits;"   > G:\fruits3.txt
Enter password: *************

fruits3.txt  包含数据包中的数据:

                                                        

  【例】使用 mysql 命令,将  test_db  数据库中  fruits  表中的记录导出到文本文件。使用 --vertical  参数显示结果。

    执行命令:

C:\>mysql  -u root  -p --vertical --execute="SELECT  *  FROM  fruits;"  test_db  > G:\fruits4.txt
Enter password: *************

fruits3.txt  包含数据包中的数据:

*************************** 1. row ***************************f_id: a1s_id: 101f_name: apple
f_price: 5.20
*************************** 2. row ***************************f_id: a2s_id: 103f_name: apricot
f_price: 2.20
*************************** 3. row ***************************f_id: b1s_id: 101f_name: blackberry
f_price: 10.20
*************************** 4. row ***************************f_id: b2s_id: 104f_name: berry
f_price: 7.60
*************************** 5. row ***************************f_id: b5s_id: 107f_name: xxxx
f_price: 3.60
*************************** 6. row ***************************f_id: bs1s_id: 102f_name: orange
f_price: 11.20
*************************** 7. row ***************************f_id: bs2s_id: 105f_name: melon
f_price: 8.20
*************************** 8. row ***************************f_id: c0s_id: 101f_name: cherry
f_price: 3.20
*************************** 9. row ***************************f_id: l2s_id: 104f_name: lemon
f_price: 6.40
*************************** 10. row ***************************f_id: m1s_id: 106f_name: mango
f_price: 15.60
*************************** 11. row ***************************f_id: m2s_id: 105f_name: xbabay
f_price: 2.60
*************************** 12. row ***************************f_id: m3s_id: 105f_name: xxtt
f_price: 11.60
*************************** 13. row ***************************f_id: o2s_id: 103f_name: coconut
f_price: 9.20
*************************** 14. row ***************************f_id: t1s_id: 102f_name: banana
f_price: 10.30
*************************** 15. row ***************************f_id: t2s_id: 102f_name: grape
f_price: 5.30
*************************** 16. row ***************************f_id: t4s_id: 107f_name: xbababa
f_price: 3.60

    【例】使用 mysql 命令,将  test_db  数据库中  fruits  表中的记录导出到  xml  文件。

     执行的命令如下:

C:\>mysql  -u root  -p --xml --execute="SELECT  *  FROM  fruits;"  test_db  > G:\fruits.xml
Enter password: *************
  


    

【例】使用 mysql 命令,将  test_db  数据库中  fruits  表中的记录导出到  HTML  文件。

     执行的命令如下:

C:\>mysql  -u root  -p --html --execute="SELECT  *  FROM  fruits;"  test_db  > G:\fruits.html
Enter password: *************

                                                         

二.   导入文件

    1.   用  LOAD DATA INFILE  导入文本文件

    语法格式如下:

    LOAD   DATA    INFILE    'filename.txt'    INTO     TABLE      tablename     [OPTIONS]    [IGNORE number LINES]

--OPTIONS 选项
  FIELDS    TERMINATED    BY    'value'       /*设置字段之间分隔符,单个或多个字符,默认为'\t'*/
  FIELDS     [OPTIONALLY]    ENCLOSEED   BY    'value'     /*设置字段包围分隔符,单个字符*/
  FIELDS     ESCAPED    BY    'value'          /*如何写入或读取特殊字符,单个字符*/
  LINES    STARTING   BY     'value'           /*每行数据开头的字符,单个或多个*/
  LINES    TERMINATED    BY    'value'      /*每行数据结尾的字符,单个或多个*/


【例】使用 LOAD  DATA  语句将  G:\fruits.txt   文件中的数据导入到  test_db  数据库中的 person 表。使用FIELDS   和  LINES 选项,要求字段之间使用逗号隔开,所有字段值用双引号括起来,定义转义字符为单引号“\'”。

    还原之前将  fruits  表中数据全部删除:

mysql> use  test_db
Database changed
mysql> DELETE  FROM  fruits;
Query OK, 16 rows affected (0.19 sec)mysql> SELECT  *  FROM  fruits;
Empty set (0.00 sec)

从  fruits.txt 文件中还原数据:

mysql> LOAD  DATA  INFILE  'G:\fruits.txt' INTO  TABLE test_db.fruits-> FIELDS->  TERMINATED BY ','-> ENCLOSED BY '\"'-> ESCAPED BY '\''->  LINES-> TERMINATED BY '\r\n';
Query OK, 16 rows affected (0.15 sec)

查看执行结果:

mysql> SELECT  *  FROM  fruits;
+------+------+------------+---------+
| f_id | s_id | f_name     | f_price |
+------+------+------------+---------+
| a1   |  101 | apple      |    5.20 |
| a2   |  103 | apricot    |    2.20 |
| b1   |  101 | blackberry |   10.20 |
| b2   |  104 | berry      |    7.60 |
| b5   |  107 | xxxx       |    3.60 |
| bs1  |  102 | orange     |   11.20 |
| bs2  |  105 | melon      |    8.20 |
| c0   |  101 | cherry     |    3.20 |
| l2   |  104 | lemon      |    6.40 |
| m1   |  106 | mango      |   15.60 |
| m2   |  105 | xbabay     |    2.60 |
| m3   |  105 | xxtt       |   11.60 |
| o2   |  103 | coconut    |    9.20 |
| t1   |  102 | banana     |   10.30 |
| t2   |  102 | grape      |    5.30 |
| t4   |  107 | xbababa    |    3.60 |
+------+------+------------+---------+


2.  用  mysqlimport  命令导入文本文件

     使用  mysqlimport  可以导入文本文件,并且不需要登录  MySQL  客户端。mysqlimport 命令提供了许多与LOAD DATA INFILE 语句相同的功能。使用  mysqlimport 语句需要指定所需的选项、导入的数据库名称以及导入的数据文件的路径和名称。

    语法格式如下:

   mysqlimport   -u   root   -p   dbname   filename.txt [OPTIONS]

  --OPTION 选项
  --fields-terminated-by=value
  --fields-enclosed-by=value
  --fields-optionally-enclosed-by=value
  --fields-escaped-by=value
  --lines-terminated-by=value
  --ignore-lines=n


    dbname 为导入的表所在的数据库名称。mysqlimport  命令不指定导入数据库的表名称,数据表的名称由导入文件的名称确定,即文件名作为表名,导入数据之前该表必须存在。

    OPTIONS  为可选参数选项,其常见的取值如下:

  •    --fields-terminated-by=value:  设置字段之间的分隔符,可以为单个或多个字符,默认情况下为制表符“\t”。
  •    --fields-enclosed-by=value:   设置字段的包围字符。
  •    --fields-optionally-enclosed-by=value: 设置字段的包围字符,只能为单个字符,只包括  CHAR  和  VARCHAR  等字符数据字段。
  •     --fields-escaped-by=value: 控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为“\”。
  •     --lines-terminated-by=value: 设置每行数据结尾的字符,可以为单个或多个字符,默认值为“\n”。
  •     --ignore-lines=n:  忽视数据文件的前  n  行

     【例】使用  mysqlimport  命令将  G:\fruits.txt 文件内容导入  test_db  数据库中,字段之间使用逗号隔开,所有字段值用双引号括起来,定义转义字符为问号(?)每行记录以回车换行符“\r\n”结尾。

  还原之前将  fruits  表中数据全部删除:

mysql> use  test_db
Database changed
mysql> DELETE  FROM  fruits;
Query OK, 16 rows affected (0.19 sec)mysql> SELECT  *  FROM  fruits;
Empty set (0.00 sec)

从  fruits.txt 文件中还原数据:

C:\>mysqlimport  -u  root   -p  test_db  G:\fruits.txt   --fields-terminated-by=,  --fields-optionally-enclosed-by=\" --fields-escaped-by=?  --lines-terminated-by=\r\n
Enter password: *************
test_db.fruits: Records: 16  Deleted: 0  Skipped: 0  Warnings: 0
【注】双引号要用转义字符
mysql转义字符  
  • \0   
    一个ASCII   0   (NUL)字符。   
    \n   
    一个新行符。   
    \t   
    一个定位符。   
    \r   
    一个回车符。   
    \b   
    一个退格符。   
    \ '   
    一个单引号(“ '”)符。   
    \ "   
    一个双引号(“ "”)符。   
    \\   
    一个反斜线(“\”)符。   
    \%   
    一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。   
    \_   
    一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。   
    注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。   

    有几种方法在一个字符串内包括引号:   

    一个字符串内用“ '”加引号的“ '”可以被写作为“ ' '”。   
    一个字符串内用“ "”加引号的“ "”可以被写作为“ " "”。   
    你可以把一个转义字符(“\”)放在引号前面。   
    一个字符串内用“ "”加引号的“ '”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“ '”加引号的与“ "”也不需要特殊对待。  


 【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版


http://chatgpt.dhexx.cn/article/s8lP3QGH.shtml

相关文章

C代码实现Mysql导出表数据,sql语句保存

概述 本人最近项目的要求,需要定时检查数据库变化,定时将变化的数据库数据导出来另外保存。 所以研究数据库数据导出功能,并记录下开发过程。因暂时没有需要,没有将数据库的结构保存。 软件环境 编译器:vs2022 数据…

MySQL导出表数据至excel表格

虽然很简单,但还是把步骤记下来,防止以后忘记 第一步:选中表名 点击导出向导 第二步:选择导出格式 第三步:选择导出.xlsx文件的名字以及存放路径 第四步:设置编码格式 第五步:设置导出数据是否…

mysql数据库导入导出sql文件

目录 1.导出sql文件2.导入sql文件 在使用MySQL数据库时,经常需要备份和恢复数据库,通过导出sql文件备份和直接执行sql文件恢复是非常便捷的方式。本篇博客主要介绍如何对MySQL数据库通过cmd命令导出和导入sql文件。 1.导出sql文件 导出sql文件可以使用m…

MySQL表的导出

MySQL表的导出有两种方式:1,select … into outfile … 2,mysqldump工具进行导出 1.select … into outfile … 方式导出: (1)默认导出地址查询:show variables like secure_file_priv,后续将该地址设为数据…

mysql数据库如何导出表和数据

1.选择需要导出的表 2.右击选择转储SQL文件 3.输入文件名选择sql脚本文件 4.完成

mysql导出表_mysql导出表的3种方式

文章转载自 : https://blog.csdn.net/jbb0403/article/details/26359573 navicat导出表一共有三中用法: 第一种:数据库上右键—>"转储SQL文件",如图: "转储文件"是把整个数据库表全部导出&…

javase转javaee(java web)

1、点击help——>ininstall new software;点击add,输入name:javaweb ; location:http://download.eclipse.org/releases/mars(该地址可以根据eclipse版本下载相应的jar包);等待下载完成后重启ecli…

javase-jdk下载、安装、配置

一.下载 1.地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 二.安装 安装到默认路径…… 安装完后: 三.配置环境 在系统变量中操作 1.创建一个名为 JAVA_HOME 新的环境变量,输入变量值,如&#…

JavaSE JDK搭建

一、下载JDK 下载链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html?ssSourceSiteIdotncn 二、JDK安装 默认安装路径即可 三、环境变量的配置 1 JAVA_HOME 注意:JAVA_HOME的值即为jdk的安装地址 2 pat…

下载安装Java8

下载java的官网:http://www.orcle.com 点击产品。 点击java 点击下载java 点击java archive 点击javaSE8 这里我下载的是windows x64 二. 安装Java 这里我只讲重要部分其余直接单击下一步 这里点击更改位置但是把名字设置为ava\jdk1.8.0_202 后面再次更改位置时改…

java se win10_Win10 JAVASE的下载和环境变量设置

1、Java的下载 官方网站下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据你当前的操作系统以及开发要求选择合适的JaveSE版本; 2.Java的安装 公共JRE可以选择不安装,因为JDK已经包含有JR…

Java 官网下载+安装(Linux)

目录结构: 1. 官网下载JDK 2. 安装JDK 1.官网下载JDK 官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1)点选“Accept”,点击下载“jdk-8u221-linux-x64.tar.gz” 2&#x…

JavaSE基础知识点思维导图

最近开启新一轮的知识点复习,先从JavaSE开始。文章里是PNG格式,可能不是很清晰,文末附上PDF和xmind工程文件链接,需要的小伙伴自取,都只需要1个币(设置成0个币还需要啥下载码)。如有错误的地方欢…

jdk 下载

前言 经常搭建环境需要 jdk,oracl e又让登录,自己又不想登录,很麻烦。在网上找的,以便自己开发中用到。 oracle官网 https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 在网上找到的,…

JavaSE详细教程.1

目录 前言 一.Java开发环境的准备 1.Sublime工具 2.CMD窗口 3.Java环境变量配置 二.开发工具IDEA的安装 三.编写第一个Java程序—HelloWorld 前言 本人还只是刚刚入坑编程的一个小白,这里更多的是将自己平时学到的东西整理记录出来,难免有时候会有错…

JAVASE安装

下载步骤 打开“Oracle”官网 点击 第二步 点击JAVA 第三步找到JAVASE 第四步找到172版本 第五步点击进去 点同意 这两个任意一个就可以 然后点64位后面的下载地址就可以了 安装步骤 第一步双击打开exe文件进行安装 可更改也可不更改文件路径(随你) 然…

javase和java区别_javase和java有什么区别

Java EE、Java SE和Java ME的区别 Java SE Java SE(Java Platform,Standard Edition)。JavaSE以前称为J2SE.它允许开发和部署在桌面、服务器、嵌入式环境和实施环境中使用的Java应用程序。JavaSE 包括支持Java Web服务开发的类,并为Java Platform,Enter…

JavaSE思维导图

Java基础知识: 面向对象: 集合: 多线程、网络编程、反射、设计模式: 常用API: 转载 https://blog.csdn.net/qq_34983808/article/details/78644802 转载于:https://www.cnblogs.com/chengruifeng/p/9952142.html

【Java】JavaSE JDK 及离线帮助文档下载链接

下载页 下载主页 - https://www.oracle.com/java/technologies/downloads/ 帮助文档 javase-jdk18-doc-downloads javase-jdk17-doc-downloads javase-jdk11-doc-downloads javase-jdk8-doc-downloads