最近做一個項目的DOTNET版,說是升級,從asp升為DOTNET,可因為項目架構原因,數據庫得從Oracle轉為SQL SERVER...^_|| ,之前未使用過ORACLE,轉換數據過程中碰到了不小的麻煩。
這中間過程之痛苦不再贅述,直接講我導數據流程及遇到的問題.如有講錯的地方,請大家指教~~
一、前提: 因為我是從ORACLE數據庫服務器導出到目的機器,所以首先在目的機器上安裝ORACLE同一版本的客戶端,這樣做是為了在用MSSQL導入數據時能選擇ORACLE數據源。接下來我做的這個動作不知是否是必須的:ORACLE程序菜單中->net manage增加一個服務命名,填入源機器所在ORACLE庫服務名,主機名。
二、在目的機器上安裝了PL/SQL Devloper 7 ,填入登錄源數據庫的用戶名,密碼,選擇數據庫,登入OK,這步主要查看ORACLE數據庫,為了知道哪些表或其它元素需要導出,并作參考。
三、具體工作來了。。
(1)表:如果只需要導出表結構,用PL/SQL Devloper -->Tools -->Export Tables,選擇表,填入文件名,導出。
存儲過程,視圖,函數:用PL/SQL Devloper -->Tools -->Export User Objects ,選擇對象,填入文件名導出。
(2)以上SQL文件導完,因PLSQL和SQL的些許不同,花了點心思把它們改成SQLSERVER上可以執行的語句,在MSSQL的查詢分析器中執行生成。
(3)導出表結構及數據:在目的機器上數據源管理器中新建一個系統DSN或文件DSN,選擇ORACLE ODBC DRIVER ,數據源名稱和說明隨便填,服務名及用戶ID填ORACLE源數據庫相應的服務名。 然后運行MSSQL ->導入導出工具->選擇源數據中選擇”其它(ODBC數據源)”,選擇剛才建的系統DSN或文件DSN,填入登錄ORACLE庫的用戶名,密碼,進入;接下來的選擇目標源動作就和MSSQL自己的導入數據操作是一樣了。。。導完之后,記得更改相應的字段類型,默認值等等。。
ORACLE到SQLSERVER需要注意的有:
(1)表中字段類型的變化,number 變為float,varchar2變為varchar;
(2)ORACLE中沒有設置自增字段,有需要用到時,它是在sequence中建一個sequence,所以得查找ORACLE表中是否有這種對應,從而在MSSQL中設置自增字段。
(3)在導出表結構及數據中碰到了個問題:選擇數據源時,我選中了系統DSN,填入用戶名密碼,點下一步時,彈出了個錯誤窗口,提示:oci.dll找不到指定的模塊,點確定后提示用戶名密碼錯誤。。。上網搜索了N久,才找出解決方法:(1)ORACLE9i以上.Net Manager->本地->概要文件->ORACLE高級安全性->驗證->去掉NTS這一項(因為我使用的是ORACLE8I所以沒試過這方法,但網上作者說可以);(2) 在ORACLE安裝目錄下搜索到Sqlnet.ora文件,加入一行: sqlnet.authentication-services=(none)保存,重啟機器,再試下從MSSQL導入導出工具連接源機器,OK。
至此,ORACLE轉MSSQL的工作大部分就完成了。。希望對大家有點幫助,歡迎回貼指點錯誤及另好的方法。^_^
http://flyskywlh.cnblogs.com/archive/2006/07/07/445443.html
新聞熱點
疑難解答