2014-08-31 52 views
3

我有兩個使用相同模式運行的MySQL實例。一個在雲端;一個在我的本地盒子上。本地盒子版本在其主表中需要幾個測試行。如何將單個行/記錄從一個MySQL實例複製到另一個?

實際上,我想對生產表上的單個記錄執行類似mysqldump或mysqlhotcopy的操作,然後將該記錄「還原」到本地實例的同一個表中。我不想複製整個表格。如果本地表上有行,我希望它們保持獨立。

我很好,複製行的PK發生了變化。我不在乎外鍵,如果有的話。

該表格非常龐大而且複雜,因此使用select語句打印記錄並對其進行格式化是不平凡的。

我有什麼選擇?

+0

[聯合存儲引擎](https://dev.mysql.com/doc/refman/5.6/en/federated-storage-engine.html)將是一個選項。 – VMai 2014-08-31 17:37:42

回答

5

如果你已經熟悉了mysqldump的,我會提醒你的mysqldump有--where選項,因此,如果你寫的條件,你可以得到一個單行:

mysqldump databasename tablename --where "id=12345" --no-create-info --skip-add-locks --host=db1 | \ 
    mysql --host=db2 

你也可以請使用SELECT...INTO OUTFILE將所需查詢的結果轉儲到平面文件中,即使是單行查詢。然後LOAD DATA INFILE在另一個實例上導入該文件。

你也可以在你選擇的語言中編寫一個簡單的腳本。連接到兩個實例。從源實例中選擇一行,將其保存在腳本中的變量中。然後形成一個INSERT命令以針對目標實例執行。這可能不是移動大量數據的最有效方式,但對於單行來說,這樣可以。

+0

謝謝比爾。一般來說,這些對我來說都是很好的選擇。不幸的是,我查看了Cloud SQL文檔,它不支持選擇outfile,並且不支持mysqldump。 : - /有沒有一種選擇可以在其他地方容易導入的格式選擇一行? – user3562927 2014-08-31 22:39:41

+0

查看我上面提到的第三個選項。用PHP或Python或Ruby或Perl或任何適合您的腳本編寫腳本,將行讀取到數組中,並使用第二個數據庫連接將數據庫插入到目標實例中。 – 2014-09-01 04:36:23

相關問題