mysql中数据库或数据的导入导出我们用到命令有mysqldump与source命令了,它们分别有自己的优点与作用,下面我来介绍利用mysqldump导出数据与利用source导入备份的数据.
mysqldump是mysql自带的一个数据导入导出工具,其官方注释为:
- shell> mysqldump [options] db_name [tbl_name ...]
- shell> mysqldump [options] –databases db_name …
- shell> mysqldump [options] –all-databases
使用mysqldump命令将整个数据库导出,代码如下:
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables > crazyant.sql
其中-h后面是主机名,-P后面是端口号,-u后面是用户名,-p后面是密码,crazyant是要导出的数据库名.
由于导出过程中出现了这个错误:
mysqldump: Got error: 1044: Access denied for user 'root'@'127.0.0.1' to database 'crazyant' when using LOCK TABLE
所以在最后面,我加上了–skip-lock-tables这个选项,就没有错误了.
mysqldump命令导出时设定不需要导出的表,有时候一个数据库中有一些表我们不想导出,这时候可以使用mysqldump的–ignore-table命令来设定过滤的表,该参数的用法如下:
- –ignore-table=name Do not dump the specified table. To specify more than one
- table to ignore, use the directive multiple times, once
- for each table. Each table must be specified with both
- database and table names, e.g., //phpfensi.com
- –ignore-table=database.table.
可以看出其用法:
• –ignore-table=database.table
•每次只能指定一个表,如果要指定多个表,该选项需要写多次.
使用实例,代码如下:
- mysqldump -h 127.0.1.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables –ignore-table=crazyant.table1 –ignore-table=crazyant.table2 –ignore-table=crazyant.table3 –ignore-table=crazyant.table4 > crazyant.sql
使用mysqldump命令只导出1个表或指定表的方法,也可以在mysqldump的database后面跟上要1个要导出的表,来只导出单个表,代码如下:
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 –skip-lock-tables crazyant table_a >dump_table_a.sql
也可以写上多个要导出的表,以空格分开它们即可,代码如下:
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 –skip-lock-tables crazyant table_a table_b >dump_two_tables.sql
可以看出,只要用“database_name tablename1 tablename2 tablename3”的方式写出导出数据库的表即可.
使用mysqldump命令只导出表结构的方法:
mysqldump还有一个选项能够只导出表的结构,而不导出表的内容:
-d, –no-data No row information
使用实例,代码如下:
mysqldump –opt -d -h 127.0.0.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables
使用source命令导入数据:
使用mysql的source命令,可以将mysqldump的导出结果直接Load到数据表里面,使用方法如下:
- > mysql -h 127.0.1.1 -P 3306 -u root -p123456
- mysql> use crazyant;
- mysql> source /home/crazyant.net/mysqldump_crazyant.sql
这样就完成了导入,如果是全量导入,有时候有必要使用truncate table的方式先将数据清空.
总结:使用MySQL自带的mysqldump和source命令,能够很方便的将数据库的数据导出,也能够将导出的数据导入到库中. |