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

问题描述 投票:0回答:1

我有一个被调用的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只是将参数插入表中(基于第一个参数)。 看起来值很长,一次插入,但我如何将这些长文本插入数据库?

sql oracle insert
1个回答
1
投票

您确实达到了SQLPlus限制。

来自the Oracle doc on error SP2-0778

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

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

这个other Oracle doc说:

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.