MySQL导入导出方法总结
使用into outfile 和 load data infile导入导出数据
这种方法的好处是,导出的数据可以自己规定格式,并且导出的是纯数据,不存在建表信息,你可以直接导入另外一个同数据库的不同表中,相对于mysqldump比较灵活机动。
下面的mysql命令是把select的mytable表中的数据导出到/home/db_bak2012文件。
select * from mytable where status!=0 and name!='' into outfile '/home/db_bak2012' fields terminated by '|' enclosed by '"' lines terminated by '\r\n' ;
参考:
https://dev.mysql.com/doc/refman/5.7/en/select-into.html
导入刚才备份的数据,可以使用load data infile方法,等价于mysqlimport命令,下面的mysql命令,把导出的数据导入了mytable_bak的表中:
load data infile '/home/db_bak2012' into table mytable_bak fields terminated by '|' enclosed by '"' lines terminated by '\r\n' ;
参考:
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html
使用mysqldump导出数据库
我们来看几个常用用例:
(1)导出整个数据库数据和表结构
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
(2)导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
(3)导出结构不导出数据
mysqldump --opt -d 数据库名 -u root -p > xxx.sql
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
#-d 不导出数据只导出结构 --add-drop-table 在每个create语句之前增加一个drop table
(4)导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql
(5)导入数据库,常用source 命令
mysql -u root -p
mysql>use 数据库
mysql>set names utf8; (先确认编码,如果不设置可能会出现乱码,注意不是UTF-8)
mysql>source ./wcnc_db.sql
(6)多库导出
上边的实例只是最基础的,有的时候我们可能需要批量导出多个库,我们就可以加上--databases 或者-B,如下语句:
mysqldump -uroot -p --databases test mysql #空格分隔
还有的时候我们可能需要把数据库内所有的库全部备份,我们就可以使用-all-databases,如下语句:
mysqldump -uroot -p -all-databases
(7)条件导出
mysqldump命令中带有一个 --where/-w 参数,它用来设定数据导出的条件,使用方式和SQL查询命令中中的where基本上相同,有了它,我们就可以从数据库中导出你需要的那部分数据了。
命令格式如下:
mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径
例子:
从test数据库的test_data表中导出id大于100的数据到 /tmp/test.sql 这个文件中
mysqldump -uroot -p123456 test test_data --where=" id > 100" > /tmp/test.sql
导入的时候
mysql -u root -p 123456 test test_data < test.sql
参考:
https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
![](/img/my/wx.png)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Mysql数据库连接查询
Mysql数据库连接查询 连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。通过连接运算可以实现多个表查询。当查询数据时,通过连接操作查询出存放在多个表中的不同实体信息。当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询。如下将介绍多表之间的内连接查询、外连接查询以及复合条件连接查询。 内连接查询 内连接(inner join)使用比较运算符进行表间列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,并组合成新的记录。新建学生表、班级表,在两个表之间实现连接查询。其中tb_class中的主键id为tb_student的外键,表结构如下: 表中数据如下: 表的连接查询语句为:SELECT tb_student.*,tb_class.name FROM tb_student,tb_class WHERE tb_student.classID=tb_class.id;或SELECT tb_student.*,tb_class.name FROM tb_student INNER JOIN tb_cl...
- 下一篇
mysql表碎片的查询自己回收
在MySQL中,我们经常会使用VARCHAR、TEXT、BLOB等可变长度的文本数据类型。不过,当我们使用这些数据类型之后,我们就不得不做一些额外的工作——MySQL数据表碎片整理。 每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。 当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。 1.或者查看某个表所占空间,以及碎片大小。 select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables where TABLE_SCHEMA='test'; 或者 select table_name,engine,table_rows,data_length+index_length length,DATA_FR...
相关文章
文章评论
共有0条评论来说两句吧...