2011-08-16 89 views
1

我有兩個數據庫。我想從第一個數據庫中的一個表中轉儲數據,並在第二個數據庫中插入另一個具有另一個名稱的表。
所以我有DB1有表tbl1和tabl2,和DB2有表tbl3和tbl4。我知道tabl1和tabl3具有相同的結構。如何使用mysqldump命令將數據從一個複製到另一個?
我試過這樣做,但它不起作用。如何從一個表中轉儲數據並插入到另一個表中

mysqldump --user root --password=password --no-create-info DB1 tbl1 > c:/dump.sql 
mysql --user root --password=password DB2 tbl3 < c:/dump.sql 

回答

5

這是行不通的,由於不同的表名

如果兩個數據庫都使用相同的守護進程坐在同一臺服務器,你可以直接

insert into DB2.tbl3 select * from DB1.tbl1; 

如果TBL1沒有在DB2現有,
此僞代碼:

# import as tbl1 from DB1 into tbl1 in DB2 
mysqldump DB1 tbl1 | mysql DB2 

# then rename tbl1 in DB2 to tbl3 
mysql DB2 -N <<< "rename table tbl1 to tbl3" 
+0

對不起,您可以告訴我,哪種方法更好 - 性能明智,插入tbl3或者從新表中轉儲並恢復,考慮到我的桌子上有10億(1億)條目。 – Saurabh

+0

做一個轉儲,並重新插入會更好。或者設置一個複製。 – ajreal

2

我使用的Linux shell命令行

mysqldump --user=username --password=xxxx dbname | mysql --host=remotehost.com --user=username --password=xxxx -C dname 

這種轉移是從本地主機到遠程主機,整個數據庫。

+0

當運行此命令(mysqldump的--user =根--password =密碼DB1 TBL1 |的MySQL --user =根--pas劍=密碼-C DB2 tbl3)在說:「寫錯了沒有22」。 – Alexander

+0

您確定用戶名/密碼組合有足夠的權利在雙方都做到這一點嗎? – uncovery

+0

是的,我確定 – Alexander

相關問題