文本文件的Oracle数据类型?

时间:2010-12-21 02:14:22

标签: sql database oracle database-design types

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

像VARCHAR2这样的文本特定类型的限制看起来非常小(32K)。其他类型似乎不是文本文件的正确匹配(例如BFILE)。

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

3 个答案:

答案 0 :(得分:9)

CLOB和BLOB / BFILE之间的区别在于CLOB被视为Text。也就是说,如果从数据库中提取CLOB,它将执行从数据库字符集到客户端字符集所需的任何转换(例如,从ê中删除重音)。类似地,当客户端创建CLOB时,可以存在从客户端字符集到数据库字符集的转换。如果客户端和数据库字符集相同,则不需要或不执行转换。

NCLOB与CLOB类似,只是转换使用NLS NCHAR字符集而不是数据库字符集。

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

所以我通常会使用CLOB作为文本,但是如果有一些校验和/审计跟踪逻辑,我甚至不想进行字符集转换,我可能会选择BLOB / BFILE。我不会考虑长期或长期。

答案 1 :(得分:1)

取决于您使用的CLOB或Long

的Oracle版本

答案 2 :(得分:1)

字符数据的LOB数据类型是CLOB和NCLOB。 它们可以存储多达8TB的字符数据(CLOB)或国家字符集数据(NCLOB)。

稍后Oracle建议您将现有的LONG RAW列转换为LOB列。与LONG列相比,LOB列的限制要少得多。此外,LOB功能在每个版本中都得到了增强,而LONG RAW功能在几个版本中都是静态的。