回覆列表
  • 1 # 遊戲戲如人生

    有時由於專案開發的需要,必須將SQLServer2005中的某些表同步到Oracle資料庫中,由其他其他系統來讀取這些資料。不同資料庫型別之間的資料同步我們可以使用連結伺服器和SQLAgent來實現。假設我們這邊(SQLServer2005)有一個合同管理系統,其中有表contract 和contract_project是需要同步到一個MIS系統中的(Oracle9i)那麼,我們可以按照以下幾步實現資料庫的同步。1.在Oracle中建立對應的contract 和 contract_project表,需要同步哪些欄位我們就建那些欄位到Oracle表中。 這裡需要注意的是Oracle的資料型別和SQLServer的資料型別是不一樣的,那麼他們之間是什麼樣的關係拉?我們可以在SQLServer下執行: SELECT *FROM msdb.dbo.MSdatatype_mappingsSELECT *FROM msdb.dbo.sysdatatypemappings來檢視SQLServer和其他資料庫系統的資料型別對應關係。第一個SQL語句是看SQL轉Oracle的型別對應,而第二個表則更詳細得顯示了各個資料庫系統的型別對應。根據第一個表和我們的SQLServer中的欄位型別我們就可以建立好Oracle表了。SQLServer和Oracle的對應2.建立連結伺服器。我們將Oracle系統作為SQLServer的連結伺服器加入到SQLServer中。 具體做法參見我以前的文章

    http://www.cnblogs.com/studyzy/archive/2006/12/08/690307.html

    3.使用SQL語句透過連結伺服器將SQLServer資料寫入Oracle中。 比如我們建立了連結伺服器MIS,而Oracle中在MIS使用者下面建立了表contract_project,那麼我們的SQL語句就是: DELETE FROM MIS..MIS.CONTRACT_PROJECT--清空Oracle表中的資料INSERT into MIS..MIS.CONTRACT_PROJECT--將SQLServer中的資料寫到Oracle中SELECT contract_id,project_code,actual_moneyFROM contract_project如果報告成功,那麼我們的資料就已經寫入到Oracle中了。用 SELECT *FROM MIS..MIS.CONTRACT_PROJECT檢視Oracle資料庫中是否已經有資料了。4.建立SQLAgent,將以上同步SQL語句作為執行語句,每天定時同步兩次。 這樣我們的同步就完成了。 這裡需要注意的是MIS..MIS.CONTRACT_PROJECT 這裡必須要大寫,如果是小寫的話會造成同步失敗。

  • 中秋節和大豐收的關聯?
  • 被女生套路是怎樣一種體驗?