2010-07-01 22 views
0

我在我的表中有一個我想要轉換爲CLOB的Varchar2字段。我不確定數據是否會在選中時被截斷。如果是這樣,限制是什麼,它取決於數據庫設置?在SELECT查詢中顯示時,CLOB數據會被截斷嗎?如果是這樣,它如何顯示?

在我的TOAD或SQLPLUS窗口中,它會被截斷,但這可能只是環境設置。我不確定它是否會在我的實際應用程序中被截斷(我可以測試這個,但是我應該測試什麼尺寸?)

如果它被截斷,那麼顯示整個CLOB的最佳方式是什麼?在我的SELECT查詢中還有其他字段,所以我認爲我不能循環遍歷多行。有什麼出路嗎?

感謝您的幫助。

回答

2

在10gR2中,CLOB可以保存「(4千兆字節 - 1)*(數據庫塊大小)」,數據庫塊大小通常爲8k。

所以CLOB理論上可以是超過大部分機器應對範圍的TB級數據。

因此,「我應該測試什麼尺寸」的答案是您決定的任何尺寸。我會比預期處理的限制大一個數量級,所以如果我期待5 MB的值,我會用50 MB測試。對於文本來說,50MB會非常大(儘管如果它是某種日誌文件,它可能是合適的)。

+0

嗨加里, 感謝您的回答。 我認爲我沒有正確理解你。我知道CLOB可以存儲大量的數據。我不知道的是,是否需要執行某些特殊處理以避免截斷或者是否可以在沒有任何其他步驟的情況下使用CLOB來代替VARCHAR2。 您的意思是整個CLOB將默認顯示在SELECT查詢中嗎?還是受數據庫塊大小的限制? 是否有任何特殊處理要在選擇查詢中顯示CLOB?或者它默認顯示整個CLOB? – Zesty 2010-07-01 07:06:04

+1

我在說的是,對於非常大的CLOB,你可能會遇到問題(例如內存分配),並且你不希望或者能夠一次處理數百兆字節。你想要處理它大塊(例如,一次可能100K)。 – 2010-07-03 02:08:15

+0

啊。感謝澄清。 – Zesty 2010-07-04 10:57:01

2

如果你從表中選擇一個clob值,它取決於你的應用程序如何處理它。如果將varchar2列更改爲clob列,則需要更改應用程序,以便從數據庫中正確檢索clob數據。 所以我想答案是:可以讓它正常工作。

+0

感謝您的回覆。有人可以將此標記爲有用嗎?我還不能這樣做。 – Zesty 2010-07-01 08:25:41

相關問題