Mysql

MySQL,使用另一個數據庫導入 SQL 轉儲

  • November 13, 2012

我有一個包含這一行的 db1 的 SQL 轉儲:

“使用 db1”

如果我將該文件導入 db2:

mysql -D db2 -uroot -p < /var/backups/db1.sql.gz

是否存在 db1 被覆蓋的風險?

通過閱讀官方文件,我會說你的猜測是正確的,轉儲腳本將覆蓋 DB1 數據庫。

MySQL 使用 db 語法

USE db_name 語句告訴 MySQL 使用 db_name 數據庫作為後續語句的預設(目前)數據庫。數據庫保持預設狀態,直到會話結束或發出另一個 USE 語句。

解決方案是 Stuart 提出的,使用類似 grep 的工具在轉儲文件中查找“use db1”並將“use db2”替換為“use db2”。甚至可能在轉儲腳本中對 db1 的其他引用(使用完整表名的過程..)。有適用於 Linux 或 Windows 變體的解決方案來編輯該大文本文件。

除了使用sed刪除USE db1語句之外,如果您可以獲取數據庫的新轉儲:

mysqldump db1 > newdump.sql

USE db1應該生成沒有語句的轉儲。

引用自:https://dba.stackexchange.com/questions/28594