【问题标题】:Prepend table names on MySQL database export在 MySQL 数据库导出中添加表名
【发布时间】:2012-04-04 17:19:14
【问题描述】:

导出 mysql 转储时是否可以在所有表​​中添加一些文本。

例如:如果表名为chapters,我想在其前面加上old_,使其变为old_chapters

【问题讨论】:

  • 你不能只对转储文件进行搜索和替换吗?
  • 有问题的转储还包括内容,而且非常大(它会阻碍大多数文本编辑器)。这些术语也存在于内容中,这使得简单的替换非常棘手。
  • 复制相关表然后忽略转储中的原始表如何?
  • 应该是这个的副本:stackoverflow.com/questions/3326581/…

标签: mysql export


【解决方案1】:

根据架构的复杂性,您可以使用精心设计的sed 命令来完成此操作,该命令会查找所有表引用并在表名前加上“old_”。

例如,此命令将转储您的架构和数据,并将 old_ 前缀添加到 drop/create table 语句以及 lock/alter table 和 insert 语句:

mysqldump your_schema | sed -e 's/DROP TABLE IF EXISTS `/DROP TABLE IF EXISTS `old_/' -e 's/CREATE TABLE `/CREATE TABLE `old_/' -e 's/INSERT INTO `/INSERT INTO `old_/' -e 's/LOCK TABLES `/LOCK TABLES `old_/' -e 's/ALTER TABLE `/ALTER TABLE `old_/'

但是,该命令不会为以下任何类型的表引用添加表前缀:

  • 外键约束
  • 观看次数
  • 触发器
  • 存储的例程

【讨论】:

  • 外键加入:-e 's/REFERENCES /REFERENCES old_/'
猜你喜欢
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
相关资源
最近更新 更多