使用 mysqldump 时跳过或忽略临时表
Posted
技术标签:
【中文标题】使用 mysqldump 时跳过或忽略临时表【英文标题】:Skipping or Ignoring Temp tables when using mysqldump 【发布时间】:2020-05-18 18:30:44 【问题描述】:想知道是否有一种方法可以使用 mysqldump 跳过/忽略所有临时表。在我们的例子中,这些表的前缀是 tmpguid。
这些临时表的生命周期很短,它们用于在其父应用程序中构建某种报告。生命周期最长可达 1 分钟。
编辑: 有人建议我使用 ignore-tables 参数,不幸的是,这并没有为我提供一种将通配符指定为表名 (tmp*) 的方法。
【问题讨论】:
这能回答你的问题吗? Skip certain tables with mysqldump @nbk 并非如此,由于表名是唯一的,因此忽略表不支持像tmp*
这样的通配符名称。
看到 mysqldump 不能做通配符,所以你有一种语言可以构建忽略表字符串。 Information_schema 为您提供所有 temo 表,然后构建字符串。如果你有 linux 你可以使用github.com/maxbube/mydumper/blob/master/docs/…
@nbk 感谢您的建议,但我想暂时坚持使用官方工具(目前似乎没有在 dumper 上进行太多开发)。如果我要构建字符串并且其中一个表不再存在,它会出错还是会默默地继续?
@Tom - 希望这会有所帮助 -> ***.com/questions/25398663/…
【参考方案1】:
您不是在谈论来自CREATE TEMPORARY TABLE ...
的表格,对吗?相反,您是在谈论一组具有特定命名约定的表?
不要尝试使用表名,而是使用DATABASE
:
CREATE TABLE TempTables;
CREATE TABLE TempTables.abcd (...);
并通过数据库名称引用它们:
INSERT INTO TempTables.abcd ...
SELECT ... FROM TempTables.abcd JOIN ...
然后在mysqldump to avoid that one
DATABASE` 上使用合适的参数(或选择所有其他数据库进行转储)。
【讨论】:
不确定我是否误解了您的解决方案,但我没有构建数据库,只是备份它。 @TomDickson - 我建议一种解决方法 - 将您的“临时”表放在不同的数据库中,以便进行选择性备份。 这些临时表的生命周期很短,它们用于在其父应用程序中构建某种报告。生命周期最长可达 1 分钟。 @TomDickson - 意外备份其中的一些是否有很大的担忧?以上是关于使用 mysqldump 时跳过或忽略临时表的主要内容,如果未能解决你的问题,请参考以下文章
在使用 mysqldump 命令进行表备份时,我们可以跳过特定列吗?
使用SqlBulkCopy 从sybase复制表到sqlserver中遇到重复的数据怎么办? 能不能设置什,跳过该次插入