在Oracle上使用Varchar2包含大于4000的字符串的SQLAlchemy类型

时间:2014-01-20 15:20:11

标签: python oracle oracle11g sqlalchemy

我正在使用Oracle数据库,在某个列中我需要插入字符串,在某些情况下大于4000个符号(Oracle 11g将Varchar2大小限制为4000)。我们需要使用Oracle 11g,而且我知道12g扩展模式。我不想将CLOB数据类型用于性能考虑。我想到的解决方案是拆分列并编写一个自定义SQLAlchemy数据类型,如果字符串大于4000,则将数据写入第二列。

所以,我的问题是:

  1. 我们是否会从中获得任何显着的性能提升(而不是使用Clob)?
  2. 如何实施SQLAlchemy?目前我们使用types.TypeDecorator作为自定义类型,但在这种情况下,我们需要在两个字段中读/写。

1 个答案:

答案 0 :(得分:1)

CLOB或NCLOB将是最佳选择。避免将数据拆分为列。当数据大于2列时会发生什么 - 它会再次失败。它也使它成为维护的噩梦。我看到人们将数据拆分成某些数据库中的行只是因为数据库不支持更大的字符数据类型(旧的Sybase版本)。但是,如果您的数据库具有为此目的而构建的数据类型,请务必使用它。