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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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似乎没有这个限制。

以上是关于oracle sql:插入长文本但接收SP2-0778:脚本文件名和参数太长的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL 脚本在 H2 数据库中插入长文本

Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名

Oracle SQL:从大型文本文件运行插入语句

生成.txt文件并插入到oracle表pl/sql中

读取文本文件以将数据插入 Oracle SQL 表

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