2014-02-12 98 views
0

我是一名程序員,我正在編寫一些SQL代碼以從遠程Oracle數據庫提取數據並將其插入到本地MS SQL Server的某些表中。如何僅複製從Oracle NCLOB到NVARCHAR2(4000)的前4000個字符值?

我需要將Oracle NCLOB列引入MS SQL Server數據庫中的NVARCHAR列。

我們沒有DBA人員爲我做這件事。

爲了我的目的,具有整個NCLOB值並不重要,因此4000個字符只是我選擇的任意大的數字。

我的目標是儘可能多地在Oracle端的NVARCHAR2字段中存儲數據,並且仍然保持在日常數據刷新中實現網絡的實用性。

我看到了許多許多人提到的解決方案,讓所有數據,並獲取數據超過4000個字符等,但我正在尋找一個簡單的版本,我可以很容易地放入和保持不重型數據庫管理員級別的工作。

回答

2

結帳http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:367980988799

你會想dbms_lob.substr

每帖子上面提到的使用:

dbms_lob.substr(clob_column, for_how_many_bytes, from_which_byte);

例如:

select dbms_lob.substr(x, 4000, 1) from T;

會得到我的第克洛布的4000個角色。注意,使用SQL 時,像我一樣,最大長度爲4000,您可以使用獲得32K PLSQL:

declare my_var long; begin for x in (select X from t)
loop my_var := dbms_lob.substr(x.X, 32000, 1); ....

+1

我看到了你提到的文章,但我得到從鏈接的服務器錯誤向Oracle陳述「字符串緩衝區太小」 - 所以我繼續前進。然而,由於你在答案中的參考而重新閱讀它,我發現由於該字段是NCLOB,所以我最好給雙字節字符留出足夠的空間。爲此,我將字符數從4000改爲2000 - 現在就像一個魅力一樣。 – condiosluzverde

相關問題