mysqldump导出数据时,某些表不导出,排除某些表,不导出某些表
需求说明:
今天一同事问,在通过mysqldump导出数据库的时候,能不能把某些表不导出,或者叫做排除在外呢,
记得应该是可以实现,就搜索了下,通过mysqldump的--ignore-table参数能够实现,再次记录下。
操作过程:
1.查看某个库及其中的表的情况
mysql> use mytest Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; #查看当前数据库中,所有的表的情况 +--------------------+ | Tables_in_mytest | +--------------------+ | sms_send_blacklist | | td_b_sendobject | | test | | ti_o_sms | | ti_o_smsbak | +--------------------+ 5 rows in set (0.00 sec)
2.通过mysqldump命令的--ignore-table选项,将ti_o_sms表排除在外
[mysql@testvm01 baks]$ mysqldump --databases mytest --ignore-table=mytest.ti_o_sms > mytest.sql [mysql@testvm01 baks]$ ll total 7112 -rw-rw-r--. 1 mysql mysql 7280800 Jan 3 20:27 mytest.sql
3.查看导出的dump文件中,是否包含ti_o_sms表
[mysql@testvm01 baks]$ grep "ti_o_sms" mytest.sql -- Table structure for table `ti_o_smsbak` DROP TABLE IF EXISTS `ti_o_smsbak`; CREATE TABLE `ti_o_smsbak` ( -- Dumping data for table `ti_o_smsbak` LOCK TABLES `ti_o_smsbak` WRITE; /*!40000 ALTER TABLE `ti_o_smsbak` DISABLE KEYS */; /*!40000 ALTER TABLE `ti_o_smsbak` ENABLE KEYS */;
备注:没有看到ti_o_sms表的信息,看到的仅仅是ti_o_smsbak表的信息。
4.将多个表排除在外
[mysql@testvm01 baks]$ mysqldump --databases mytest --ignore-table=mytest.ti_o_sms --ignore-table=mytest.ti_o_smsbak > mytest02.sql [mysql@testvm01 baks]$ ll total 14220 -rw-rw-r--. 1 mysql mysql 7277128 Jan 3 20:29 mytest02.sql -rw-rw-r--. 1 mysql mysql 7280800 Jan 3 20:27 mytest.sql
5.查看其中是否包括ti_o_sms和ti_o_smsbak表的信息
[mysql@testvm01 baks]$ grep -E "ti_o_sms|ti_o_smsbak" mytest02.sql [mysql@testvm01 baks]$
备注:通过以上的结果说明,2张表都已经被排除在外了。
mysqldump命令的--ignore-table参数的语法
--ignore-table=db_name.tbl_name Do not dump the given table, which must be specified using both the database and table names. To ignore multiple tables, use this option multiple times. This option also can be used to ignore views.
解释:
--ignore-table=数据库名.表名
该参数的作用是,对某些表不进行导出。等号后面的参数即表的信息,必须通过数据库和表名来定义。如果要忽略多张表,那么就要多次使用--ignore-table参数,比如--ignore-table=A.tabA --ignore-table=A.tabB.
同时,这个参数可以用来忽略视图的导出。