0x01: Linux 下 MySQL 数据库导入与导出

1.MySQL 数据库的导出命令参数:

(1) MySQL 连接参数:

  1. -u 用户名
  2. -p 密码
  3. -h 127.0.0.1 :如果连接远程服务器,请用对应的主机名或IP地址替换。
  4. -p 3306 :端口
  5. --default-character-set=utf8 : 指定字符集
  6. --skip-column-names:不显示数据列的名字
  7. -B:以批处理的方式运行MySQL程序,查询结果将显示为制表符间隔格式。
  8. -e:执行命令后退出。

(2) mysqldump 参数:

  1. -A 全库备份。
  2. --routines 备份存储过程和函数。
  3. --default-character-set=utf8 : 指定字符集
  4. --lock-all-tables 全局一致性锁。
  5. --add-drop-database : 在每次执行建表语句之前,先执行DROP TABLE IF EXIST 语句。
  6. --no-create-db 不输出 CREATE DATABASE 语句。
  7. --no-create-info;不输出 create table 语句。
  8. --databases 将后面的参数解析为域名。
  9. --tables:第一个参数为库名。

2.MySQL 数据库的常见导出命令:

(1) 导出全库备份到本地数据库:

  1. mysqldump -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 --lock-all-tables --add-drop-database -A > db.all.sql

(2) 导出指定数据库到本地目录:

  1. mysqldump -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 --databases antian > antian.sql

(3)导出某个库的表到本地的目录:

  1. mysqldump -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 --tables antian user>antian.user.sql

(4) 导出指定库的表(仅数据)到本地的目录(Mysql 数据库的 user表,带过滤条件:

  1. mysqldump -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 --no-create-db --no-create-info --tables mysql user --where="host='localhost'" >db.table,sql

(5) 导出某个库的所有表结构:

  1. mysqldump -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 --no-data --databases mysql > db.nodata.sql

(6) 导出某个查询sql的数据为 .txt 格式文件到本地的目录(各数据值之间用制表符分隔)

  1. ' select user,host,password from mysql.user;'
  2. mysqldump -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 --skip-column-names -B -e 'select user,host,password from mysql.user;' > mysql_user.txt

(7) 导出某个查询SQL的数据为txt 格式文件到 MySQL 服务器:
登录到MySQL,将默认的制表符换成逗号(适应 .csv文件),后跟指定的路径,MySQL要有写的权限,最好用 tmp 目录,文件用完后删除。

  1. select user,host,password from mysql.user into outfile '/tmp/mysql_user.csv' fields terminated by ' ,';

3. 加快MySQL 数据库导出速度的技巧:

Mysql 导出的 SQL 语句在导入时有可能会非常慢,在处理百万级的数据时,可能导入需要几个小时。在导出合理使用几个参数,可以大大的加快导入的速度。在命令中加入 “ -e“ 及几个参数就可以加快导入速度。

  • —max_allowed_packet=XXXX: 客户端/ 服务器之间通信缓存区的最大值。
  • —net_buffer_length=XXX: TCP / IP 和套接字通信缓冲区大小,创建长度达 net_buffer_length 的行。

注意: —max_allowed_packet 和 —net_buffer_length 不能比目标数据库的设定值大,否则可能会出错。

  1. 首先确定目标数据库的参数值:
  2. show variables like 'max_allowed_packet';
  3. show variables like 'net_buffer_length';

根据参数值书写mysqldump 命令:

  1. mysqldump -uroot -p antian antian365 -e --max-allowed_packet=8388608 --net_buffer_length=8192 > antian.sql

4. MySQL 数据库导入常见命令:

导入恢复全库数据到MySQL,因为包含的MySQL数据库的权限表,导入完成时需要执行 ” flush privileges; “命令。

(1) 使用 mysql 命令导入数据库:

  1. mysql -u user -p passwd -h 127.0.0.1 -p 3306 --routines --default-character-set=utf8 < db.all.sql

(2) 使用 source 命令导入:
需要登录MySQL ,然后执行 source 命令,需要注意的是,后面的文件要用绝对路径。

  1. mysql> source /tmp/db.all.sql;

(3)使用 mysql 命令恢复某个库的数据(如 antian365库的 user表)

  1. mysqldump -u$user -p$password -h 127.0.0.1 -p 3306 --default-character-set=utf8 antian365 < antian365.user.sql

(4)使用 source 命令恢复某个库的数据:

  1. mysqldump -u$user -p$password -h 127.0.0.1 -p 3306 --default-character-set=utf8
  2. user mysql
  3. source /tmp/ antian365.user.sql

(5) 恢复 Mysql 服务器上面的 TXT文件:

  1. mysqldump -u$user -p$password -h 127.0.0.1 -p 3306 --default-character-set=utf8
  2. user mysql
  3. load data infile '/tmp/mysql_user.txt' into table user

(6)恢复mysql 服务器上的 .csv 格式文件(需要 file 权限,各数据值之间用逗号分隔):

  1. mysqldump -u$user -p$password -h 127.0.0.1 -p 3306 --default-character-set=utf8
  2. user mysql
  3. load data infile '/tmp/mysql_user.csv' into table user fields terminated by ',';

(7) 恢复本地的 .txt 或 .csv 文件到Mysql:

  1. mysqldump -u$user -p$password -h 127.0.0.1 -p 3306 --default-character-set=utf8
  2. user mysql
  3. load data infile '/tmp/mysql_user.txt' into table user
  4. load data infile '/tmp/mysql_user.csv' into table user fields terminated by ',';

0x02:WIndows 下 MySQL 数据库导入导出:

(1)Mysqldump 命令导出:

  1. mysqldump -u 用户名 -p 123456 数据库名称 > 导出的数据库文件

(2)Mysqldump导入数据库的命令行

  1. mysqldump -u 用户名 -p 123456 数据库名称 < 导出的数据库文件

(3)mysql 命令导入与导出

  1. 将数据库 xxx 导出到 D盘根目录 xxx.sql 文件:
  2. mysqldump -u 用户名 -p 123456 -h localhost xxx>d:\xxx.sql
  3. 将数据库D盘下的 xxx.sql 文件导入到数据库 xxx中;
  4. mysqldump -u 用户名 -p 123456 -h localhost xxx < d:\xxx.sql
  5. 或者登录mysql以后通过命令导出:
  6. source d:\xxx.sql