mysql 跳过已有的表,使用mysqldump跳过某些表

Is there a way to restrict certain tables from the mysqldump command?

For example, I'd use the following syntax to dump only table1 and table2:

mysqldump -u username -p database table1 table2 > database.sql

But is there a similar way to dump all the tables except table1 and table2? I haven't found anything in the mysqldump documentation, so is brute-force (specifying all the table names) the only way to go?

解决方案

You can use the --ignore-table option. So you could do

mysqldump -u username -p database --ignore-table=database.table1 > database.sql

If you want to ignore multiple tables you can use a simple script like this

#!/bin/bash

PASSWORD=XXXXXX

HOST=XXXXXX

USER=XXXXXX

DATABASE=databasename

DB_FILE=dump.sql

EXCLUDED_TABLES=(

table1

table2

table3

table4

tableN

)

IGNORED_TABLES_STRING=''

for TABLE in "${EXCLUDED_TABLES[@]}"

do :

IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"

done

echo "Dump structure"

mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data ${DATABASE} > ${DB_FILE}

echo "Dump content"

mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info ${IGNORED_TABLES_STRING} >> ${DB_FILE}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值