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)