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