mysql跳过错误i_sql - 使用mysqldump跳过某些表

sql - 使用mysqldump跳过某些表

有没有办法从mysqldump命令限制某些表?

例如,我使用以下语法只转储table1和table2:

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

但是有没有类似的方法来转储除table1和table2之外的所有表? 我还没有在mysqldump文档中找到任何内容,那么brute-force(指定所有表名)是唯一的方法吗?

7个解决方案

800 votes

您可以使用--ignore-table选项。 所以你可以做到

mysqldump -u USERNAME -pPASSWORD --ignore-table=database.table1 > database.sql

在-p之后没有空格(这不是拼写错误)。

如果要忽略多个表,可以使用这样的简单脚本

#!/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 --routines ${DATABASE} > ${DB_FILE}

echo "Dump content"

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

Paul Sheldrake answered 2019-01-09T05:32:02Z

96 votes

基于@Brian-Fisher的回答,并回答了一些人在这篇文章中的评论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值