【问题标题】:How to split a large query in command line?如何在命令行中拆分大型查询?
【发布时间】:2021-06-18 02:01:59
【问题描述】:

我在我的 docker 环境中安装了 oracle db 版本 19c 并设置了一个填充了虚拟数据的数据库。但是,当我尝试运行一个非常大的查询时,我得到了错误:

SP2-0341:变量替换期间行溢出(> 第 1 行的 3000 个字符)。

我尝试使用换行符将其拆分,但根据拆分方式,我会遇到各种错误,例如:

第 2 行出现错误:ORA-00933:SQL 命令未正确结束

第 2 行出现错误: SP2-0341:变量替换期间行溢出(> 第 3 行的 3000 个字符)

查询格式为

SELECT AA.n_name AS AA_n_name, AA.n_nationkey AS ...
FROM nation AS AA FULL OUTER JOIN supplier...
WHERE (AC.p_partkey = ... AND...) OR((AC.p_partkey = ...)); -- The where part is over 5000 characters long--

是否有替代方案或解决方案可以在命令行中解决此问题?我也尝试将查询作为 sql 文件运行并达到 4999 限制。如果有帮助,我在 Ubuntu 服务器上,如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 您可以在脚本的任何位置插入换行符
  • 当我说换行符时,我的意思是换行符,所以不幸的是我仍然卡住了。
  • 整个查询的长度是多少?为什么它这么大?
  • 它有超过 6000 个字符长,适用于我正在进行的项目。
  • 然后看起来查询格式错误,因为在任何地方都允许换行并且不会产生任何错误。我无法想象 6000 长并且位于一行中的手写查询:没有人会一次尝试正确地编写它,并且为了便于阅读,它应该使用适当的格式逐步编写。好伤心,但看起来这个问题无法回答

标签: sql database oracle docker


【解决方案1】:

这取决于您工作的环境,但通常您可以通过以“反斜杠”\ 结束行来将命令继续到下一行。

【讨论】:

  • 感谢您的建议,我之前尝试过但不幸导致错误:ORA-00933:SQL 命令未正确结束。
  • 查询确实格式错误,修复后此解决方案确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2011-02-22
相关资源
最近更新 更多