本篇来演示MySQL的导入和导出。
MySQL之导出
可以使用以下两种方法进行MySQL的导出,分别为:
  • SELECT ... INTO OUTFILE ...
  • Mysqldump工具
1、SELECT ... INTO OUTFILE ...
1)语法如下:
SELECT * FROM tablename INTO OUTFILE 'target_file' [option];
其中option参数可以是以下选项:
  • FIELDS TERMINATED BY 'string'(字段分隔符,默认为制表符‘\t’);
  • FIELDS [OPTIONALLY] ENCLOSED BY 'char' (字段引用符,如果加OPTIONALLY选项则只用在char、varchar和text等字符型字段上,默认不使用引用符);
  • FIELDS ESCAPED BY ‘char’ (转义字符,默认为‘\’);
  • LINES STARTING BY ‘string’ (每行前都加此字符串,默认‘’);
  • LINES TERMINATED BY ‘string’ (行结束符,默认为‘\n’);
2)使用默认选项导出数据库test下的t_mm表;
mysql> select *from t_mm into outfile '/usr/local/mysql/mysql-files/emp.txt';
Query OK, 6 rows affected (0.04 sec)mysql> system more /usr/local/mysql/mysql-files/emp.txt;
1   Alen    2018-03-09 15:33:03
3   UK  2018-03-09 15:35:55
4   Japan   2018-03-09 12:36:16
6   USA 2018-03-09 13:19:35
8   Begin MMM....   2018-03-09 14:54:40
10  Hello   2018-03-12 15:33:22
mysql> 
注:如果有同名的文件,则导出失败;
3)使用带选项的语句导出数据库test下的t_mm表;
mysql> select *from t_mm into outfile '/usr/local/mysql/mysql-files/emp.txt' fields terminated by ','  enclosed by '"';
Query OK, 6 rows affected (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/emp.txt;
"1","Alen","2018-03-09 15:33:03"
"3","UK","2018-03-09 15:35:55"
"4","Japan","2018-03-09 12:36:16"
"6","USA","2018-03-09 13:19:35"
"8","Begin MMM....","2018-03-09 14:54:40"
"10","Hello","2018-03-12 15:33:22"
mysql> 
4)如上,第一列是数字类型,不希望用引号引起,语句可改为:
mysql> select *from t_mm into outfile '/usr/local/mysql/mysql-files/emp.txt' fields terminated by ','  optionally enclosed by '"';
Query OK, 6 rows affected (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/emp.txt;
1,"Alen","2018-03-09 15:33:03"
3,"UK","2018-03-09 15:35:55"
4,"Japan","2018-03-09 12:36:16"
6,"USA","2018-03-09 13:19:35"
8,"Begin MMM....","2018-03-09 14:54:40"
10,"Hello","2018-03-12 15:33:22"
mysql> 
2、Mysqldump工具
1)语法如下:
mysqldump -uusername -p -T target_dir dbname tablename [option]
其中option参数可以是以下选项:
  • --fields-terminated-by=name(字段分隔符);
  • --fields-enclosed-by=name(字段引用符);
  • --fields-optionally-enclosed-by=name(字段引用符,只用在char、varchar和text等字符型字段上);
  • --fields-escaped-by=name(转义字符);
  • --lines-terminated-by=name(记录结束符);
2)使用默认选项导出数据库test下的所有表;
mysql> system mysqldump -uroot -p -T /usr/local/mysql/mysql-files/ test;
Enter password:
mysql> system ls -l /usr/local/mysql/mysql-files/
total 16
-rw-r--r--. 1 root  root  1437 Mar 13 22:11 t_emp.sql
-rw-rw-rw-. 1 mysql mysql  111 Mar 13 22:11 t_emp.txt
-rw-r--r--. 1 root  root  1435 Mar 13 22:11 t_mm.sql
-rw-rw-rw-. 1 mysql mysql  171 Mar 13 22:11 t_mm.txt
mysql>
mysql> system more /usr/local/mysql/mysql-files/t_emp.txt
1   张三  2018-03-13 18:53:44
3   李四  2018-03-13 18:53:44
5   Alen    2018-03-13 17:37:34
7   USA 2018-03-13 17:39:45
mysql> system more /usr/local/mysql/mysql-files/t_emp.sql--导出表定义脚本
3)使用带选项的语句导出数据库test下的t_emp表;
mysql> system mysqldump -uroot -p -T /usr/local/mysql/mysql-files/ test t_emp --fields-terminated-by=',' --fields-optionally-enclosed-by='"';
Enter password:
mysql> system ls -l  /usr/local/mysql/mysql-files/
total 8
-rw-r--r--. 1 root  root  1437 Mar 13 22:18 t_emp.sql
-rw-rw-rw-. 1 mysql mysql  127 Mar 13 22:18 t_emp.txt
mysql> system more  /usr/local/mysql/mysql-files/t_emp.txt
1,"张三","2018-03-13 18:53:44"
3,"李四","2018-03-13 18:53:44"
5,"Alen","2018-03-13 17:37:34"
7,"USA","2018-03-13 17:39:45"
mysql> 
以上,可以发现,mysqldump和select...into outfile...的选项和语法非常相似,其实,mysqldump实际调用的就是后者提供的接口,并在其上增添了新功能而已。
MySQL之导入
MySQL的导入功能和导出相对应,也有两种导入方式,分别为:
  • LOAD DATA INFILE...
  • MySQLImport工具
1、LOAD DATA INFILE...
1)语法如下:
LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tablename [option]
其中option参数可以是以下选项:
  • FIELDS TERMINATED BY 'string'(字段分隔符,默认为制表符‘\t’);
  • FIELDS [OPTIONALLY] ENCLOSED BY 'char' (字段引用符,如果加OPTIONALLY选项则只用在char、varchar和text等字符型字段上,默认不使用引用符);
  • FIELDS ESCAPED BY ‘char’ (转义字符,默认为‘\’);
  • LINES STARTING BY ‘string’ (每行前都加此字符串,默认‘’);
  • LINES TERMINATED BY ‘string’ (行结束符,默认为‘\n’);
  • IGNORE number LINES(忽略输入文件中的前n行数据);
  • (col_name_or_user_var,...)(按照列出的字段顺序和字段数量加载数据);
  • SET col_name=expr,...将列做一定的数值转换后再加载;
2)加载导出的t_emp表数据;
mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by  ',' optionally enclosed by '"';
Query OK, 4 rows affected (0.02 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0mysql> select *from t_emp;
+----+--------+---------------------+
| id | name   | cdate               |
+----+--------+---------------------+
|  1 | 张三   | 2018-03-13 18:53:44 |
|  3 | 李四   | 2018-03-13 18:53:44 |
|  5 | Alen   | 2018-03-13 17:37:34 |
|  7 | USA    | 2018-03-13 17:39:45 |
+----+--------+---------------------+
4 rows in set (0.00 sec)mysql> 
3)如果不希望加载前2行,可以用以下语句:
mysql> truncate table t_emp;
Query OK, 0 rows affected (0.06 sec)
mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by  ',' enclosed by '"' ignore 2 lines;
Query OK, 2 rows affected (0.03 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0mysql> select *from t_emp;
+----+------+---------------------+
| id | name | cdate               |
+----+------+---------------------+
|  5 | Alen | 2018-03-13 17:37:34 |
|  7 | USA  | 2018-03-13 17:39:45 |
+----+------+---------------------+
2 rows in set (0.00 sec)
mysql> system more /usr/local/mysql/mysql-files/t_emp.txt
1,"张三","2018-03-13 18:53:44"
3,"李四","2018-03-13 18:53:44"
5,"Alen","2018-03-13 17:37:34"
7,"USA","2018-03-13 17:39:45"
mysql> 
4)使用LINES STARTING BY ‘string’选项过滤数据;
mysql> system more /usr/local/mysql/mysql-files/t_emp.txt
Alen1,"张三","2018-03-13 18:53:44"
3,"李四","2018-03-13 18:53:44"
Alen5,"Alen","2018-03-13 17:37:34"
7,"USA","2018-03-13 17:39:45"
mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by  ',' enclosed by '"' lines starting by 'Alen';
Query OK, 2 rows affected (0.05 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0mysql> select *from t_emp;
+----+--------+---------------------+
| id | name   | cdate               |
+----+--------+---------------------+
|  1 | 张三   | 2018-03-13 18:53:44 |
|  5 | Alen   | 2018-03-13 17:37:34 |
+----+--------+---------------------+
2 rows in set (0.00 sec)mysql> 
注:LINES STARTING BY ‘string’选项时,可跳过指定字符的前缀以及前缀之前的所有字符,如果某行不包含该指定字符,则该行记录也会被跳过。
5)表中的列数多于数据文件时的处理;
mysql> desc t_emp;
+-------+--------------+------+-----+-------------------+----------------+
| Field | Type         | Null | Key | Default           | Extra          |
+-------+--------------+------+-----+-------------------+----------------+
| id    | int(11)      | NO   | PRI | NULL              | auto_increment |
| name  | varchar(100) | YES  |     | NULL              |                |
| cdate | datetime     | YES  |     | CURRENT_TIMESTAMP |                |
| sex   | char(1)      | YES  |     | NULL              |                |
+-------+--------------+------+-----+-------------------+----------------+
4 rows in set (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/t_emp.txt
1,"张三","2018-03-13 18:53:44"
3,"李四","2018-03-13 18:53:44"
5,"Alen","2018-03-13 17:37:34"
7,"USA","2018-03-13 17:39:45"
mysql> truncate table t_emp;
Query OK, 0 rows affected (0.07 sec)mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by  ',' enclosed by '"' (id,name,cdate);
Query OK, 4 rows affected (0.06 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0mysql> select *from t_emp;
+----+--------+---------------------+------+
| id | name   | cdate               | sex  |
+----+--------+---------------------+------+
|  1 | 张三   | 2018-03-13 18:53:44 | NULL |
|  3 | 李四   | 2018-03-13 18:53:44 | NULL |
|  5 | Alen   | 2018-03-13 17:37:34 | NULL |
|  7 | USA    | 2018-03-13 17:39:45 | NULL |
+----+--------+---------------------+------+
4 rows in set (0.00 sec)mysql> 
6)表中的列数少于数据文件时的处理;
mysql> desc t_emp;
+-------+--------------+------+-----+-------------------+----------------+
| Field | Type         | Null | Key | Default           | Extra          |
+-------+--------------+------+-----+-------------------+----------------+
| id    | int(11)      | NO   | PRI | NULL              | auto_increment |
| name  | varchar(100) | YES  |     | NULL              |                |
| cdate | datetime     | YES  |     | CURRENT_TIMESTAMP |                |
| sex   | int(1)       | YES  |     | NULL              |                |
+-------+--------------+------+-----+-------------------+----------------+
4 rows in set (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/t_emp.txt
1,1,"张三","2018-03-13 18:53:44",25
3,1,"李四","2018-03-13 18:53:44",24
5,1,"Alen","2018-03-13 17:37:34",30
7,0,"Lucy","2018-03-13 17:39:45",20
mysql> truncate table t_emp;
Query OK, 0 rows affected (0.07 sec)mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by  ',' enclosed by '"' (id,sex,name,cdate,@tmp);
Query OK, 4 rows affected (0.03 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0mysql> select *from t_emp;
+----+--------+---------------------+------+
| id | name   | cdate               | sex  |
+----+--------+---------------------+------+
|  1 | 张三   | 2018-03-13 18:53:44 |    1 |
|  3 | 李四   | 2018-03-13 18:53:44 |    1 |
|  5 | Alen   | 2018-03-13 17:37:34 |    1 |
|  7 | Lucy   | 2018-03-13 17:39:45 |    0 |
+----+--------+---------------------+------+
4 rows in set (0.00 sec)mysql> 
7)表中的列数和数据文件不一样,并且数据文件的列类型也不同时的处理;
mysql> desc t_emp;
+-------+--------------+------+-----+-------------------+----------------+
| Field | Type         | Null | Key | Default           | Extra          |
+-------+--------------+------+-----+-------------------+----------------+
| id    | int(11)      | NO   | PRI | NULL              | auto_increment |
| name  | varchar(100) | YES  |     | NULL              |                |
| cdate | datetime     | YES  |     | CURRENT_TIMESTAMP |                |
| sex   | int(1)       | YES  |     | NULL              |                |
+-------+--------------+------+-----+-------------------+----------------+
4 rows in set (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/t_emp.txt
1,"男","张三","2018-03-13 18:53:44",25
3,"男","李四","2018-03-13 18:53:44",24
5,"男","Alen","2018-03-13 17:37:34",30
7,"女","Lucy","2018-03-13 17:39:45",20
mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp-> fields terminated by  ','-> enclosed by '"' (id,@tmp_sex,name,cdate,@tmp)-> set sex=if(@tmp_sex='男',1,0);
Query OK, 4 rows affected (1.05 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0mysql> select *from t_emp;
+----+--------+---------------------+------+
| id | name   | cdate               | sex  |
+----+--------+---------------------+------+
|  1 | 张三   | 2018-03-13 18:53:44 |    1 |
|  3 | 李四   | 2018-03-13 18:53:44 |    1 |
|  5 | Alen   | 2018-03-13 17:37:34 |    1 |
|  7 | Lucy   | 2018-03-13 17:39:45 |    0 |
+----+--------+---------------------+------+
4 rows in set (0.00 sec)mysql> 
2、MySQLImport工具
1)语法如下:
mysqlimport -uroot -p [local] dbname tab.txt [option]
其中option参数可以是以下选项:
  • --fields-terminated-by=name(字段分隔符);
  • --fields-enclosed-by=name(字段引用符);
  • --fields-optionally-enclosed-by=name(字段引用符,只用在char、varchar和text等字符型字段上);
  • --fields-escaped-by=name(转义字符);
  • --lines-terminated-by=name(记录结束符);
  • --ignore-lines=number(忽略前几行);
注:mysqlimport命令实际上就是LOAD DATA INFILE语句的命令行调用接口,mysqlimport导入数据要求数据文件名与表名相同,更详细的命令可通过 mysqlimport --help查看。
2)用法和MySQLdump相同,举例省略...

【MySQL】MySQL之导入和导出相关推荐

  1. mysql 数据库的导入和导出

    mysql 数据库的导入和导出 视频 https://www.bilibili.com/video/BV1tV411o7zv?from=search&seid=2492452830997848 ...

  2. 利用Java进行MySql数据库的导入和导出

    来源:http://www.51testing.com/html/89/n-807989.html 利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令. ...

  3. java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出

    利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令. MySql导出数据库的命令如下: mysqldump -uusername -ppassword  ...

  4. mysql命令行导入和导出数据

    首先打开命令窗口,输入命令:mysql -h localhost -u selffabu -p 连接成功后,进行下面的操作 MySQL中导出CSV格式数据的SQL语句样本如下: Sql代码 selec ...

  5. mysql 数据库的 导入于导出

    ====================================================================备份(导出)操作======================== ...

  6. mysql表的导入和导出

    标题databases导出 mysqldump -h ip -u 用户 -p 密码 数据库  > 本地目录/yuyue1.sql; mysqldump -h ip -u 用户 -p 密码 数据库 ...

  7. mysql 数据库文件导入和导出、远程上传和下载数据库

    1.打开数据库操作软件:Navicat Premium 15 中文版,登录测试连接! 2.打开本地mysql 数据库,新建数据库的名字必须和要导入的数据库名字一致.字符集和排 序规则按下图设置即可.

  8. 导出mysql sql语句吗_mysql sql语句导入与导出

    mysql sql语句导入与导出 导入: mysql -u root -p 数据库名 如: C:/mysql/bin>mysql -u root -p house < c:/1-1.txt ...

  9. java实现 mysql导入_怎么用java实现mysql数据库的导入导出

    匿名用户 1级 2018-11-21 回答 使用Java实现对MySql数据库的导入与导出 package com.project.ajaxs; import java.io.BufferedRead ...

  10. mariadb转mysql_MariaDB/MySQL备份和恢复(二):数据导入、导出

    1.导出.导入数据 load data infile和select into outfile语句是配套的.select into outfile语句是将检索出来的数据按格式导出到文件中,数据迁移跨数据 ...

最新文章

  1. 筛选法求N以内的所有素数
  2. python openvc 裁剪、剪切图片 提取图片的行和列
  3. 用php对文件的操作
  4. linux内核网络协议栈--kernel bridge转发逻辑(十一)
  5. 【Python】Python常用的Series 和 Dataframe处理方法
  6. 那年的12月,那些悟与思2018-12-23
  7. 基于聚类算法的文本热点问题挖掘算例实现(文本聚类)
  8. OD逆向调试程序的笔记
  9. eBay实践Hadoop MapReduce 任务的性能翻倍之路
  10. WebAPI(part5)--排他操作
  11. SAP UI5 OData Json model name
  12. 数据结构括号匹配代码_栈:如何实现有效括号的判断?
  13. FFmpeg学习(0)——使用ffmpeg视频切片并加密
  14. php 上楼梯问题 递归,算法:爬楼梯问题中的递归
  15. mybatis plus+spring boot 多租户动态数据源实现方案
  16. MATLAB高斯迭代算法,基于MATLAB实现高斯赛德尔迭代潮流计算.pdf
  17. python递归汉诺塔详解_Python实现汉诺塔递归算法
  18. 01-12.产品经理入门到精通(一)
  19. 为什么工资高的程序员很少炫富?
  20. (转)一位资深程序员大牛给予Java初学者的学习路线建议

热门文章

  1. 2020-11-07
  2. 软件测试新手入门该学什么?最全整理,照着学就对了
  3. xls文件的上传和下载
  4. 图说卡尔曼滤波(C++实现)
  5. GD32 开机直接进入了深度睡眠模式导致无法下载
  6. activemq官方文档分析
  7. c语言——结构体数组——学生成绩表
  8. 如何用UE4制作2D游戏文档(一)——基础篇
  9. BZOJ2121: 字符串游戏
  10. 初级SQL开发汇总指南