AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 511333
Accepted
anup
anup
Asked: 2013-05-29 02:47:15 +0800 CST2013-05-29 02:47:15 +0800 CST 2013-05-29 02:47:15 +0800 CST

mysqldump 忽略带通配符的表

  • 772

我需要转储包含 50 个奇数表的数据库,我想排除其中大约 15 个有前缀的奇数exam_

我试过了mysqldump --ignore-table=dbname.exam_* ,甚至试过--ignore-table=dbname.exam_% 了,没有达到预期的效果。我不得不--ignore-table多次使用。

编辑:我已经看到一些列出tables not like tablename_%并将其传递给mysqldump.

但是,我想知道 mysqldump 或 mysql 中是否有一个选项,无需编写脚本即可执行相同的操作。

编辑添加:最终使用脚本转储不包括表的数据库,使用ignore-table=多次。

mysql
  • 3 3 个回答
  • 27192 Views

3 个回答

  • Voted
  1. Best Answer
    NickW
    2013-05-29T02:57:53+08:002013-05-29T02:57:53+08:00

    不,正如文档所说,mysqldump命令中没有这样的选项:

    --ignore-table=db_name.tbl_name

    不要转储给定的表,该表必须使用
    数据库名和表名指定。要忽略多个表,请多次使用此选项
    。此选项也可用于忽略视图。

    • 14
  2. Buttle Butkus
    2018-12-09T23:26:52+08:002018-12-09T23:26:52+08:00

    您可以从 mysql 中获取您想要的表名,然后使用它们来构建您的 mysql 转储参数。

    在下面的示例中,只需将“someprefix”替换为您的前缀(例如“exam_”)。

    SHOW TABLES可以更改查询以查找其他表集。或者您可以对INFORMATION_SCHEMA表进行查询以使用更多条件。

    #/bin/bash
    
    #this could be improved but it works
    read -p "Mysql username and password" user pass
    
    #specify your database, e.g. "mydb"
    DB="mydb"
    
    SQL_STRING='SHOW TABLES LIKE "someprefix%";'
    DBS=$(echo $SQL_STRING | mysql -u $user -p$pass -Bs --database=$DB )
    
    #next two lines untested, but intended to add a second excluded table prefix
    #ANOTHER_SQL_STRING='SHOW TABLES LIKE "otherprefix%";'
    #DBS="$DBS""\n"$(echo $ANOTHER_SQL_STRING | mysql -u $user -p$pass -Bs --database=$DB )
    
    #-B is for batch - tab-separated columns, newlines between rows
    #-s is for silent - produce less output
    #both result in escaping special characters
    
    #but the following might not work if you have special characters in your table names
    IFS=$'\n' read -r -a TABLES <<< $DBS
    
    IGNORE="--ignore_table="$DB"."
    IGNORE_TABLES=""
    
    for table in $TABLES; do
            IGNORE_TABLES=$IGNORE_TABLES" --ignore_table="$DB"."$table
    done
    
    #Now you have a string in $IGNORE_TABLES like this: "--ignore_table=someprefix1 --ignore_table=someprefix2 ..."
    
    mysqldump $DB --routines -u $user -p$pass $IGNORE_TABLES > specialdump.sql
    

    这是在这个答案的帮助下构建的,关于获取“在 bash 中排除的所有表”:https ://stackoverflow.com/a/9232076/631764

    这个关于使用一些 bash 跳过表的答案:https ://stackoverflow.com/a/425172/631764

    • 4
  3. user3783243
    2019-06-29T05:11:43+08:002019-06-29T05:11:43+08:00

    我认为使用information_schema是一个很好的途径。

    select group_concat(concat('--ignore-table=', TABLE_SCHEMA, '.', table_name) SEPARATOR ' ') 
    from information_schema.tables 
    where TABLE_SCHEMA = 'Actual_DB_NAME' and TABLE_NAME like 'Actual_TABLE_NAME%';
    
    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve