mysql数据库指令导入导出

mysql数据库导出使用  /mysql/bin/mysqldump指令

数据库导出

导出指令:

                    [mysql安装目录]/bin/mysqldump -u[username] -p[password] -h[host] -P[port] [databaseName] [[tableName1] [tableName2]] > [dirPath][filename].sql

上面指令中中括号里面的内容根据具体情况进行替换,如果是导出本地数据库中且数据库端口为默认3306中的数据,则不需要输入 -h[host] -P[port] 参数。

下面以导出服务器10.102.112.109机器上数据库为例,其中数据库名为:FR_BLOG,数据库端口为:7712,用户名:admin,密码:adminpass

                  //导出整个数据库数据
                  [mysql安装目录]/bin/mysqldump -uadmin -padminpass -h10.102.112.109 -P7712 FR_BLOG > /home/mysqldump/FR_BLOG.sql
                  //导出其中一个表:比如bl_user表
                  [mysql安装目录]/bin/mysqldump -uadmin -padminpass -h10.102.112.109 -P7712 FR_BLOG bl_user > /home/mysqldump/bl_user.sql

 按条件导出数据

有时候我们不需要导出一张表中的所有数据,mysqldump也提供了按条件导出的功能,--where(或者-w)="condition"

例如,我们要导出上述bl_user表中userid大于1000的数据,可以用如下指令:

               [mysql安装目录]/bin/mysqldump -uadmin -padminpass -h10.102.112.109 -P7712 FR_BLOG bl_user --where="userid>1000" > /home/mysqldump/bl_user.sql

导入:

数据库导入一般使用source指令,首先需要登录数据库,还以上述数据库为例,假设我们在数据库中新建了一个库名为:FR_BLOG_BACKUP,然后想把上述导出的bl_user.sql数据导入该库中,指令如下:

                            //首先需要登录数据库
                            [mysql安装目录]/bin/mysql -uadmin -padminpass -h10.102.112.109 -P7712

                            //然后切换到我们要导入数据的库
                            mysql> use FR_BLOG_BACKUP;

                            //导入数据
                            mysql> source /home/mysqldump/bl_user.sql

备注:

这个方法导入大批量数据也是没问题的,但是在实践中发现在进行大量数据导入的时候,可能需要对导出的.sql文件进行简单的修改,我在项目中试过7G数据的转存,第一次导入成功了,后来每次再导入都会导致整个服务器的数据库LOCK,而且数据不能导入,后来发现.sql文件中有一行为:  LOCK TABLES `page_view` WRITE;  

这是为了较快的写入数据而锁表操作,但是在导入的时候却导致了插入失败,而且影响其他数据库的使用,随意最好把这句注释掉,因为.sql文件太大,用vim打开基本上是不可能的,可以使用下面的指令修改:

                                                                        sed -i "[linenum]s/LOCK/--LOCK/1" [filename].sql

其中  [linenum]  是 LOCK TABLES `page_view` WRITE; 所在行的行号, [filename] 为要修改的.sql文件

 [linenum] 可以使用head指令查看, head -n [num] [filename].sql 

原文地址:https://www.cnblogs.com/xiaocainiao2hao/p/5619828.html