2011-09-15 32 views
0

可能重複:
update one table with data from another如何使用獨立數據庫中另一個表中的數據更新一個表?

至尊SQL小白在這裏。我有兩個數據庫(Database1,Database2)。每個數據庫都有相同的表格。我想用Database1中的TableA中的數據(Database1,TableA - > Database2,TableA)更新Database2中的TableA。

這樣做的最好方法是什麼?

+2

您正在使用哪種RDBMS(MS SQL,Oracle,MySQL)?你是否想用源表完全覆蓋目標表?只需添加新行? –

+0

這是在MS SQL中。基本上,目標表包含與源表大部分相同的數據,但源表可能在現有行中具有不同的值和/或具有新行。我希望目標表與源表匹配,所以如果目標表中不存在新行,並且還要更新現有行,我需要將目標表與源表匹配。 – Keith

+0

您需要多長時間同步2個表格?你是否在尋找實時的東西? – Swoop

回答

2

像這樣,假設您使用dbo模式。

insert into Database2.dbo.TableA (column1, column2, etc) 
select column1, column2, etc 
from Database1.dbo.TableA 

你可能想truncate Database2.dbo.TableA第一輸入數據是否應覆蓋舊的或正在使用的標識字段。

如果您需要跨表的ID完全相同,則應在運行腳本之前禁用Database2.dbo.Table上的標識屬性,然後重新啓用它。

1

如果您將其作爲一次性數據同步執行,則SQL Server在右鍵單擊特定數據庫時在「任務」選項下提供「導入/導出數據」。您可以選擇要用作數據源和目標的sql server/database/tables,然後運行該作業。設置完成後,將有機會設置一個選項來清除目標表並從源中插入所有數據。

您也可以安排這些類型的交易按計劃運行,儘管我從未在這方面做過很多工作。

+0

嘗試了導入/導出方法,但在複製過程中失敗。該錯誤消息非常神祕,並且不是很有用。有沒有一種方法來編寫腳本?我也嘗試過上面的Justin解決方案,但是它沒能插入do來複制密鑰。我只想插入新的行/鍵並更新現有的行/鍵,如果它們不同。 – Keith

+0

你能發佈錯誤信息嗎?如果您先清除目標表中的所有記錄,則可以使用Justin的方法。這應該避免重複鍵。爲了清除你的記錄,我已經使用了截斷表,這對我來說效率更高。 – Swoop

+0

謝謝。我會嘗試「截斷」,然後嘗試運行Justin的方法。 – Keith

相關問題