2012-04-04 27 views
1

當導出mysql轉儲時,是否可以在所有表​​上加上一些文本。在MySQL數據庫導出前加上表名

例如:如果表被命名爲chapters我要在前面加上old_它,因此它成爲old_chapters

+1

你不能只是做一個搜索和替換轉儲文件? – liquorvicar 2012-04-04 17:22:23

+0

有問題的轉儲還包含內容,並且相當大(它阻塞了大多數文本編輯器)。此外,這些術語也存在於內容中,這使得簡單的替換非常棘手。 – kylex 2012-04-04 17:27:19

+0

如何複製相關表格,然後忽略轉儲中的原始表格? – liquorvicar 2012-04-04 17:42:32

回答

0

根據您的架構的複雜性,你可以用一個精心製作的sed命令來實現這一點,找到所有的表格引用,並用「old_」預先給出表格名稱。

例如,這個命令會甩掉你的架構和數據與old_添加前綴刪除/創建表的語句以及鎖定/ 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_/' 

然而,該命令將不添加表前綴下列任何類型的表引用的:

  • 外鍵約束
  • 查看
  • Tr的iggers
  • 存儲例程