來源於:http://blog.csdn.net/iitkd/article/details/40394789
來源:一個7G的SQL SERVER .bak文件要導入到Oracle中,經過實驗,完成操作,先記錄操作的過程,供類似的導入導出數據參考。
實驗環境:VMBox虛擬機,Window8.1專業版,SQL SERVER2012,ORACLE 11G,7G 的.bak備份文件
簡要過程:
(1)首先配置環境,然后使用sql server2012導入備份文件,然后可以查看文件中數據庫,表的結構。
表1.1 導入數據庫,表
(2)新建查詢,使用xx命令將數據庫中的cdsgus表導出到test.txt文本。使用xp_cmdshell 和bcp命令完成。
exec xp_cmdshell 'bcp shifenzheng.dbo.cdsgus out c:\test.txt -c -T'
提示:
- b.xp_cmdshell使用是可能出現問題,不存在或高級問題,可以使用下面的命令開啟:
- exec sp_configure 'show advanced options 1'
- go
- reconfigure
- go
- exec sp_configure 'xp_cmdshell',1
- go
如果仍然出現xp_cmdShell命令無法使用時,可以通過以下步驟開啟命令:
選中對象資源管理器中的連接的服務器,右鍵-->方面-->彈出對話框,在下拉選項中選擇”外圍應用配置器“,設置XPCMDShellEnabled屬性為true;再次嘗試xp_cmdshell命令。
表1.2開啟命令XPCMDShell-方面對話框
運行命令,等待一段時間,完成數據庫表的導出,生成test.txt文件,作為導入Oracle數據庫的中間文件。
其中test.txt中僅存有數據,沒有表格的數據結構。
(3)使用sqlldr命令和control.ctl控制文件導入Oracle
- 首先在Oracle中建立一張表格,表格字段與sql server中的字段完全一樣。
- 構建control.tct文件,填寫對應的內容。
- 在cmd命令下,運行sqlldr scott/tiger@orcl control=control.txt命令即可。注意導入的txt,control.txt和當前CMD的工作目錄在同一個地方,路徑問題需要注意。
詳細Oracle導入txt文件用法詳見:http://blog.csdn.net/programpoet/article/details/4516377
備注:
使用txt作為中間文件的好處就是,不用必須同時在一台電腦上安裝sql server 和Oracle數據庫,txt文件存放中間結果,可以不同電腦上進行數據的轉移,降低數據轉移對電腦的要求。
本人就是在虛擬機上進行的數據轉移:兩個win8.1虛擬系統,分別安裝sqlserver 和Oracle數據庫,然后進行數據的導入和導出,降低了虛擬機對空間的要求,我的是7G的數據,第一次嘗試時出現了虛擬機磁盤空間不夠用的情況,安裝數據庫需要磁盤空間,導入數據需要磁盤空間,導出數據也要磁盤的空間。鑒於空間問題,數據庫便分開在兩個虛擬機系統上,txt作為中間傳輸的方式。
還有就是sql server本身自帶的導入Oracle的組件,使用時出現 了數據鏈接錯誤,說Oracle組件沒有安裝,不知道怎么做了,便采用了上述的方式,完成數據遷移。