我需要在Oracle中创建一个表,它将存储一系列大型文本文件。在查看Oracle数据类型后,我不清楚应该使用哪种类型来存储文件。
像VARCHAR2这样的文本特定类型的限制看起来非常小(32K)。其他类型似乎不是文本文件的正确匹配(例如BFILE)。
有没有人对正确使用的类型有意见?
答案 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功能在几个版本中都是静态的。