Mysql (三)|导出、导入

Scroll Down

mysql 导入导出

由于自身需求,要做生产数据同步到本地库,于是自己捣鼓了一番。今天给大家带来的是使用mysqldump,它可以支持MyISAM和InnoDB引擎,它导出的生成文件是建表语句或插入语句;

一、导出

语法: mysqldump [TMPIONS] database [tables] >导出的文件名.sql

a、导出所有

参数-A代表所有,等同于—all-databases

mysqldump -uroot -p123456 -A >all.sql
mysqldump -uroot -p123456 --all-databases >all2.sql

b、导出某个数据库(生成语句中不带建库语句)

mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql # 注意是-p空格后是数据库名,不是密码。

mysqldump -uroot -p123456 book >book.sql

c、导出单张表

导出book库user表

mysqldump -uroot -p123456 book user >user.sql  

d、导出库的表结构

只导出book库的表结构

mysqldump -uroot -p123456 -d book>booktable.sql  

e:只导出数据

只导出book库中的数据

mysqldump -uroot -p123456 -t book>bookdata.sql   

f:导出数据库,并自动生成库的创建语句(比较常用1)

导入不用指定数据库名

mysqldump -uroot -p123456 -B book2 >book2.sql
mysql -uroot -p123456 < book2.sql   

g:导出数据库,不生成库的创建语句(比较常用2)

这种导出需要指定库名,导出随意指定库名

mysqldump  -uroot -p123 --no-create-db -R 库名>/tmp/tmp.sql

mysql -uroot -p123 新库名</tmp/tmp.sql

二、导入

a:导入所有数据库

mysql -uroot -p123456 <all.sql

b:导入指定数据库

Mysql -uroot -p123456 book <book.sql 

如果导入时,没有对应的数据库,需要你手动创建一下:mysql> create database book;

c: 使用source导入

mysql> create database book;
mysql> use book;
mysql> source /root/book.sql

d: 使用source导入

mysql> drop table books;
mysql> source /root/books.sql;   ##导入表时,不需要重新,创建表。要先进到相应的数据库中
mysql> select * from books;

e:导入表结构和数据

mysql> create database book;
mysql -uroot -p123456 book<booktable.sql
mysql -uroot -p123456 book<bookdata.sql

注意

报错找不到mysql或者mysqldump请去找一下对应目录所在

find / -name mysql -print
find / -name mysqldump -print

无法导入到指定库

无法导入到指定库,需要导出时候不需要创建库语句,因此–no-create-db

具体解释如下:

  • –no-create-db=TRUE 表示不生成创建数据库的语句
  • –add-drop-table=FALSE 表示不生成drop表的语句
  • –default-character-set=“gbk” 导出数据的编码为"GBK",很重要,如果是中文数据,尤其重要
  • –where=“id<4287152 and id>0” 指定导出数据的条件
  • –skip-lock-tables 这个不是很清楚,按字面理解“跳过锁定的表”

参数说明:

  • -n: --no-create-db
  • -d: --no-data
  • -t: --no-create-info
  • -R: --routines Dump stored routines (functions and procedures)