一、导出
一、使用mysqldump命令
例如:
1、要导出远程服务器mysql的testdb数据库
mysqldump -h192.168.1.100 -uroot -proot --databases testdb
2、要导出远程服务器mysql的testdb数据库并压缩sql文件
mysqldump [-d -t] -R --single-transaction -h192.168.1.100 -uroot -proot --databases testdb [--ignore-table] | gzip > /root/testdb.sql.gz
常用参数如下:
- --routines,-R : 导出存储过程以及自定义函数。
- --single-transaction : 该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。
- --ignore-table=数据库名.表名1(排除大表,该选项可重复出现排除多张表
- -d 只导出表结构
- -t 只导出表数据
- --skip-extended-insert 一行一行导出
3.只导出单独表的数据及结构
mysqldump -uroot -proot testdb table_name1 > /root/table_name1.sql
二、导出select查询结果
Select语句 into outfile '保存路径+文件名';
二、导入
一、导入select查询结果:
load data local infile '保存路径+文件名' into table 表明 character set utf8;
二、第一种方法:
命令导入sql文件:mysql -uroot -proot 数据库名 > c:/qwe.sql(文件名)
三、第二种方法:
使用source命令
先创建数据库
在命令登入 mysql -uroot -proot
进入该数据库后
source 123.sql(不能加分号)
注意:
问题1:当导入失败时注意一下数据库编码问题
使用如下命令查看一下是否时utf8编码,刚搭建完的mysql数据库,导入数据特别容易忽略字符集
先修改my.ini文件,设置字符集,重启mysql
再执行set names ‘utf8mb4’;设置字符集
问题2:
当导入sql文件时,服务器提示:Lost connection to MySQL server during query或server has gone away
说明导入文件太大,或是导入超时,需要设置允许sql文件的大小
在my.ini文件的mysqld子节点下添加max_allowed_packet = 500M(大小随便设置)
不存在my.ini文件,则设置过程如下:
1、执行mysql --help命令查看配置文件读取顺序
2、执行sudo vim /etc/my.cnf 添加配置文件
注意:mysql的my.ini中是分模块配置的client、mysqld、mysql,可以直接复制下面的配置
[client][mysqld]
character-set-server=utf8
max_allowed_packet = 5000M[mysql]
default-character-set=utf8
3、重启mysql
4、执行mysql --print-defaults查看mysql参数
会打印mysql模块下的配置,只要出现则表示刚才的配置文件生效了
5、再次导入文件就可以了