开发者社区> 未央&> 正文

MySQL表数据的导入导出方法

简介: mysql的导入导出数据的方法有很多,这里简单介绍下select into file、mysqldump、load data 和mysqlimport方法
+关注继续查看
导出数据的方法:
一、select into outfile
将表数据导出到一个文本文件最简单的方法是使用select...into outfile语句的查询结果直接导出到OS层面上的文件中。
该语句默认的列于列之间的分隔符为tab,行与行之间的数据分隔符为换行符,通过参数可以改变分隔符:
fields terminated by '';
lines terminated by '';
注意:
用户必须要有file权限才能执行该语句;
由mysql服务器直接创建输出文件,输出文件必须不存在;
示例:
mysql> select * from jiang into outfile '/tmp/jiang.txt';
[root@jiang tmp]# cat jiang.txt 
0	ling
1	ni
2	ai
3	zhou
4	jiang
5	wo

mysql> select * from jiang into outfile '/tmp/jiang.txt'
    -> fields terminated by '#*#';
[root@jiang tmp]# cat jiang.txt 
0#*#ling
1#*#ni
2#*#ai
3#*#zhou
4#*#jiang
5#*#wo


二、mysqldump命令
mysqldump命令是逻辑备份中使用的命令,但是更常用mysqldump来导出一张表的数据。
常用格式:
导出一张完整的表(建表语句和表数据在同一文件中):
mysqldump -u** -p** db_name tb_name > filename
mysqldump -u** -p** --single-transaction db_name --tables tb >file
导出一个或多个表(表结构和表数据分离)
mysqldump -u** -p** -T directory --fields-terminated-by '*' db [tb];


导入数据的方法
一、Load data
mysql中创建一个新表,然后通过一个文件将表的数据导入到这个表中,而不用再手工通过insert输入。
Load data完整语法:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
     [REPLACE | IGNORE]
     INTO TABLE tbl_name
     [PARTITION (partition_name,...)]
     [CHARACTER SET charset_name]
     [{FIELDS | COLUMNS}  #文件每一行的字段分隔符
         [TERMINATED BY 'string']  #指明每一行的字段分隔符是什么
         [[OPTIONALLY] ENCLOSED BY 'char']
         [ESCAPED BY 'char']
     ]
     [LINES  #文件中行与行之间的分隔符,默认回车
         [STARTING BY 'string']  #指明行之间的分隔符是什么
         [TERMINATED BY 'string']
     ]
Load data示例:
创建一个新表shi,文件shi在/mydata目录下,将/mydata/shi文件的数据导入到表shi中。
mysql> load data infile '/mydata/shi' into table shi fields terminated by ',';
Query OK, 83 rows affected (0.04 sec)
Records: 83  Deleted: 0  Skipped: 0  Warnings: 0
mysql> select count(*) from shi;
+----------+
| count(*) |
+----------+
|    83 |
+----------+


二、mysqlimport
mysqlimport是mysql的一个载入数据的一个非常有效的工具,有两个参数以及大量的选项可供选择。作用就是将纯数据的文本文件导入到指定的数据库和表中。
基本用法:
mysqlimport -u** -p** db_name data_file
注意:要导入的数据文件data_file必须要在对应的数据库的目录下
常用选项:
-d or --delete 新数据导入表前删除表中原来的数据
-f or --force 不管是否遇到错误,都将强制插入数据
-i or --ignore 跳过或者忽略那些有相同唯一关键字的行
-l or --lock-tables 数据插入前锁住表
-r or --replace 与-i相反,此选项将替代表中有相同唯一关键字的记录


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【已解决】MySQL 事务回滚机制失效之误用 truncate 删除表数据
【已解决】MySQL 事务回滚机制失效之误用 truncate 删除表数据
31 0
mysql实战:左表数据全部展示,关联表有关联数据返回1,没有关联数据返回0
现在有一消息通知功能,后台发布的每条通知消息都会展示到APP端消息列表中,每条消息支持是否已读操作,从消息列表中点击进入详情视为完成已读操作;现在需要在查询出的用户消息列表信息,其中所有的通知消息信息要标注出是否已读.
68 0
MySQL 利用 frm 文件和 ibd 文件恢复表结构和表数据
MySQL 利用 frm 文件和 ibd 文件恢复表结构和表数据
286 0
mysql中清空表数据,并重置主键为1
mysql中清空表数据,并重置主键为1
79 0
【MySQL】把A表数据复制到B表中
【MySQL】把A表数据复制到B表中
219 0
【MySQL作业】DDL 和 DML——美和易思使用 DML 新增和更新表数据应用习题
【MySQL作业】DDL 和 DML——美和易思使用 DML 新增和更新表数据应用习题
58 0
mysql某个表中数据量大删除表中数据占用空间还是那么大?
mysql某个表中数据量大删除表中数据占用空间还是那么大?
241 0
面试官问:MySQL 删除表数据,磁盘空间还一直被占用,为什么?
最近有个上位机获取下位机上报数据的项目,由于上报频率比较频繁且数据量大,导致数据增长过快,磁盘占用多。 为了节约成本,定期进行数据备份,并通过delete删除表记录。 明明已经执行了delete,可表文件的大小却没减小,令人费解
296 0
Mysql查询-表数据的查询
创建一个数据库 create database python_test charset=utf8; 使用一个数据库 use python_test; 显示使用的当前数据是那个? select database(); 创建一个数据表 create table students( id int unsigned not null auto_increment primary key, name varchar(30), age tinyint unsigned default 0, high decimal(5
86 0
MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。
19508 0
+关注
未央&
道阻且长 然行则将至
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载