oracle 如何边看表中字段信息_【Oracle移行到Sqlserver完美解决案】④sqluldr2+bulk 32H=3H...
在【Oracle移行到Sqlserver完美解決案】③執行時間改善案bcp+bulk 一文中,移行實現了,但數據600多萬件,占內存3G多的操作log表,移行需要32H,這個時間我們是無法接受的。
原因:
我分析是oracle和sqlserver之間的數據類型轉化占用的大量的時間。
分析:
我們如何能避免類型數據的轉化,你如果使用了sqlserver的provider創建dblink來查詢,這個無法避免。所以開始考慮,將oracle數據的導出,和sqlserver數據的導入分開處理,中間用文件作為介質。通過bulk insert,將文件導入到sqlserver,我們上一章已經實現了,速度很快,這不是問題,那么問題就是在oracle有沒有一個能將數據快速導出為文件的工具。答案是有的,那就是sqluldr2。具體的用法就不在這里說了,有不明白的可以給我發信息。我們主要說明解決案。
實現:
環境:sqlserver和oracle是2個服務器,在sqlserver服務器,安裝了oracle的客戶端,Oracle的provider要有,在sqlserver上執行移行的工具
Oracle的provider
實現流程:
移行實現流程
1.將oracle端的表數據導出到文件exp_LDBTLOGT.txt中
sqluldr.exe user=OracleUser/OraclePass@OracleSID query="SELECT * FROM LDBTLOGT" field=0x09 record=0x0a charset=AL32UTF8 file=E:YiXingexp_LDBTLOGT.txt
簡單說明sqluldr.exe的語法,有問題聯系。
field=0x09按照tab分割各個字段數據,如果你字段中的數據有tab鍵,就會有問題。它也支持自定義,例如:field='0x09|YYYY|'
record=0x0a 行數據回車,
charset=AL32UTF8 我是日文系統,數據庫的字符集是AL32UTF8,字符集需要找特殊數據嘗試
2.將導出的文件數據,插入到sqlserver
BULK INSERT V_LDBTLOGT FROM N'E:YiXingexp_LDBTLOGT.txt' WITH ( CODEPAGE=65001,ROWTERMINATOR='0x0A')
同樣,BULK INSERT的使用也有很多注意的情況,它要和文件格式對應設置。
例如:CODEPAGE=65001,ROWTERMINATOR='0x0A',不同的格式應該加哪些設置,我這邊也基本測試了一遍,有需要可以聯系
3.blob字段的移行
Oracle的blob類型字段移行到sqlserver的varbinary類型。發現通過sqluldr.exe,無法將blob字段的內容保存到文件,所以對于有blob字段的幾個表,單獨通過DBlink,insert ... select方法移行
時間統計
這個表移行,整體用了不要3個小時,大幅度的縮減了。工具整體移行4個多小時就搞定了。基本上和oracle往oracle移行的時間差不多。執行時間問題基本就解決了。
反思
整個解決案,有幾個瑕疵,首先sqlserver端要安裝oracle客戶端,其次使用sqluldr.exe,blob字段數據無法保存到文件。
接下來,我們要實現,sqlserver上不需要安裝oracle客戶端也可以正常移行。oracle端導出文件=》拷貝到sqlserver=》sqlerver端文件插入。那么使用了dblink的blob數據的移行,首先就需要解決。blob數據如何保存成文件,如何更新到sqlserver呢,敬請期待吧。
另外,這個文章主要說明解決案,每個技術點其實沒有詳細說明,有問題可以一起討論下啊
索引:
【Oracle移行到Sqlserver完美解決案】①Sqlserver內存溢出
【Oracle移行到Sqlserver完美解決案】②內存溢出時查看SQL
【Oracle移行到Sqlserver完美解決案】③執行時間改善案bcp+bulk insert
【Oracle移行到Sqlserver完美解決案】④sqluldr2+bulk 32H=>3H
【Oracle移行到Sqlserver完美解決案】⑤不需要oracle客戶端方案
總結
以上是生活随笔為你收集整理的oracle 如何边看表中字段信息_【Oracle移行到Sqlserver完美解决案】④sqluldr2+bulk 32H=3H...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 您与此网站建立的连接不安全_PERT地暖
- 下一篇: python判断哪个数最小_怎么用pyt