2017-07-17 90 views
0

我有兩個數據庫..完全相同的結構和「幾乎」全部是重複數據。但是,我更新了database1中需要進入database2的記錄。現在是否有一種簡單的方法可以將所有新數據從數據庫1推送到數據庫2,而無需獲取重複記錄?將數據插入到數據庫的精確副本中

注意我不知道有多少個表中有更新數據。

編輯:有數據只是「新」數據

+1

截斷現有的表,推動一切? – CollinD

+0

定義「新數據」,對現有行的修改是否有效? –

+0

你試過合併嗎? – maSTAShuFu

回答

0

行你的選擇有很大的廣度沒有「修改」行。

如果你的表主鍵的值並不需要更新,我可能會建議REPLACE INTO

mysql> REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); 
Query OK, 1 row affected (0.04 sec) 

mysql> SELECT * FROM test; 
+----+------+---------------------+ 
| id | data | ts     | 
+----+------+---------------------+ 
| 1 | Old | 2014-08-20 18:47:00 | 
+----+------+---------------------+ 
1 row in set (0.00 sec)  

然後:

mysql> REPLACE INTO test VALUES (1, 'New', '2014-08-20 18:47:42'); 
Query OK, 2 rows affected (0.04 sec) 

mysql> SELECT * FROM test; 
+----+------+---------------------+ 
| id | data | ts     | 
+----+------+---------------------+ 
| 1 | New | 2014-08-20 18:47:42 | 
+----+------+---------------------+ 
1 row in set (0.00 sec) 

# (Example Straight from the MySQL AB) 

你可以用在TRANSACTION是整個操作。

OP編輯後:您仍然可以使用它作爲REPLACE INTO只會INSERT INTO,如果它沒有找到一個候選行與對應的主鍵進行更新。

爲此流的mysqldump,您可以:

mysqldump --replace --no-create-info database1 | mysql database2 

或者更簡單INSERT ... ON DUPLICATE IGNORE,因爲你實際上並不需要更新行:

mysqldump --insert-ignore --no-create-info database1 | mysql database2 
+0

他使用mssql – maSTAShuFu

0

從微軟網站: https://docs.microsoft.com/en-us/sql/relational-databases/replication/types-of-replication

Microsoft SQL Server提供以下類型的複製以用於分佈式應用程序:

  • 事務複製。有關更多信息,請參閱事務性 複製。
  • 合併複製。有關更多信息,請參閱合併複製。
  • 快照複製。有關更多信息,請參閱快照
    複製。

您爲應用程序選擇的複製類型取決於許多因素,包括物理複製環境,要複製的數據的類型和數量以及數據是否在訂閱服務器上更新。物理環境包括涉及複製的計算機的數量和位置以及這些計算機是客戶端(工作站,便攜式計算機還是手持設備)還是服務器。

每種類型的複製通常始於發佈者和訂閱者之間已發佈對象的初始同步。此初始同步可以通過使用快照進行復制來執行,快照是發佈所指定的所有對象和數據的副本。創建快照後,它將被傳送給訂閱者。對於某些應用程序,快照複製是所有必需的。對於其他類型的應用程序,重要的是後續數據更改隨着時間的推移逐漸流向訂閱服務器。某些應用程序還要求更改從訂閱服務器返回到發佈服務器。事務複製和合並複製爲這些類型的應用程序提供了選項。

數據更改不會跟蹤快照複製;每次應用快照時,它會完全覆蓋現有數據。事務複製通過SQL Server事務日誌跟蹤更改,並通過觸發器和元數據表合併複製跟蹤更改。

一些教程:https://docs.microsoft.com/en-us/sql/relational-databases/replication/replication-tutorials