1

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

例如:如果表被命名chapters,我想在它前面加上old_它,所以它变成old_chapters

4

1 回答 1

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_/'

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

  • 外键约束
  • 意见
  • 触发器
  • 存储的例程
于 2012-04-04T20:11:31.623 回答