Python 插入长文本至Oracle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 插入长文本至Oracle相关的知识,希望对你有一定的参考价值。

参考技术A 使用Oracle在更新某个字段的时候,报错ORA-01704: string literal too long。
解决办法:

首先插入数据,在已有数据的基础上,更新插入剩余数据。
字符串拼接,update使用字符串拼接

或者:

oracle sql:插入长文本但接收SP2-0778:脚本文件名和参数太长

我有一个被调用的SQL脚本,其中包含以下行:

@@./sql/common/scripts/LX2/InsertOrUpdateDefaultValuesLongVersions.sql 'typeinterface' 'en' 'ABCD.translation.SET0136.descriptions' 'Some Long text .............. ....... ....... .......... ........... .......... ....... .......... ............. ......... ......... ............. ......... ............. .....!' 'Some Longer Text .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......... .............. ....... ....... .......!';
-- shorter version (arg4 and arg5 are long texts)
@@./sql/common/scripts/LX2/InsertOrUpdateDefaultValuesLongVersions.sql '<arg1>' '<arg2>' '<arg3>' '<arg4>' '<arg5>';

执行时我收到以下错误:

SP2-0778:脚本文件名和参数太长

因此,似乎文件名和路径与他的参数一起很长。 但我不知道会有什么限制?

InsertOrUpdateDefaultValuesLongVersions.sql只是将参数插入表中(基于第一个参数)。 看起来值很长,一次插入,但我如何将这些长文本插入数据库?

答案

您确实达到了SQLPlus限制。

来自the Oracle doc on error SP2-0778

原因:对于SQL * Plus,脚本文件名和脚本参数的总长度太长。

操作:减少脚本名称和路径的长度。减少脚本参数的数量和/或大小。

这个other Oracle doc说:

  • 最大文件名长度取决于平台
  • 最大命令行长度为2500个字符

你可能达到了第二个限制。似乎没有解决方法,您需要以某种方式减少命令行的长度。

另一种可能的选择是不使用SQLPlus;例如,你可以考虑使用SQLLoader(你需要将你的参数放在一个文件中)。

或者,正如@APC评论的那样,有a new Oracle client called sqlcl似乎没有这个限制。

以上是关于Python 插入长文本至Oracle的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据的批量插入

微信小程序之文本合成语音朗读及长文本分段播放处理

在 oracle 临时表中插入 1000 多个长数字

在颤动中写长文本时如何制作段落?

iOS text的长文本换行

怎么把二进制流插入oracle的clob字段