2010-12-21 60 views
5

我需要在Oracle中創建一個表,用於存儲一系列大型文本文件。查看Oracle數據類型之後,我不清楚應該使用什麼類型來存儲文件。Oracle數據類型的文本文件?

像VARCHAR2這樣的文本特定類型的限制看起來很小(32K)。其他類型似乎不適用於文本文件(例如BFILE)。

有沒有人有正確的使用類型的意見?

+2

32K只適用於PL/SQL。在表或常規SQL中,VARCHAR2最多隻能存儲4000個字節。 – 2010-12-21 03:56:37

回答

9

CLOB和BLOB/BFILE之間的區別在於CLOB被視爲文本。也就是說,如果從數據庫中提取CLOB,它將執行從數據庫字符集到客戶端字符集所需的任何轉換(例如,從ê移除重音)。同樣,當CLOB由客戶端創建時,可以從客戶端字符集轉換爲數據庫字符集。如果客戶端和數據庫字符集都相同,則不需要或執行轉換。

NCLOB與CLOB類似,只不過不是數據庫字符集,轉換使用NLS NCHAR字符集。

BLOB/BFILE不受轉換規則的約束。

因此,通常我會使用CLOB作爲文本,但是如果有一些校驗和/審計線索邏輯,我甚至不希望字符集轉換有絲毫的可能性,我可能會選擇BLOB/BFILE。我不會考慮LONG或LONG RAW。

1

取決於你使用的是什麼版本的Oracle的任CLOB或長

+2

如果您已經棄用Long,那麼儘可能使用CLOB(除非您的Oracle版本太舊,否則可以使用)。 – Thilo 2010-12-21 02:36:44

1

字符數據的LOB數據類型是CLOB和NCLOB。 它們最多可以存儲8 TB字符數據(CLOB)或國家字符集數據(NCLOB)。

後來Oracle建議您將現有的LONG RAW列轉換爲LOB列。與LONG列相比,LOB列的限制要少得多。此外,每個版本都增強了LOB功能,而LONG RAW功能在多個版本中一直保持不變。