我需要在Oracle中创建一个表,该表将存储一系列大文本文件。在查看了Oracle数据类型之后,不清楚我应该使用哪种类型来存储文件。

像VARCHAR2这样的文本特定类型的限制似乎很小(32K)。其他类型似乎与文本文件(例如BFILE)不匹配。

有人对使用的正确类型有意见吗?

最佳答案

CLOB和BLOB/BFILE之间的区别在于,CLOB被视为文本。也就是说,如果从数据库中拉出CLOB,它将进行从数据库字符集到客户端字符集的所有必要转换(例如,从ê中删除重音符号)。同样,当客户端创建CLOB时,可能会有从客户端字符集到数据库字符集的转换。如果客户端和数据库字符集都相同,则无需转换或执行任何转换。

NCLOB类似于CLOB,不同之处在于,该转换使用NLS NCHAR字符集而不是数据库字符集。

BLOB/BFILE将不受转换规则的约束。

因此,总的来说,我会将CLOB用于文本,但是如果存在某些校验和/审计跟踪逻辑,即使我有一点可能性也不希望进行字符集转换,则我可能会选择BLOB/BFILE。我不会考虑长或长RAW。

关于sql - 文本文件的Oracle数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4495759/

10-09 15:50
查看更多