caichunjia 2017-04-21 09:54 采纳率: 0%
浏览 534

请教各位高手Oracle Spatial的问题,大集合如何处理?

Oracle Spatial中SDO_Geometry里SDO_ORDINATES,存储空间数据。现在有几十个多边形,5,6万个x、y。
在程序和plsql里执行报错“PLS-00123: 程序太大”。减少到3万(x和y的总数)多个x、y,就可以insert。多了就报错。一下是代码。
请教大家,像这种大集合,集合数量很多的,有什么好的处理方式?如何解决这个问题?

BEGIN
DECLARE geom0 SDO_GEOMETRY;
BEGIN
geom0 := SDO_GEOMETRY (2003, 111, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1,1,1003,1),
SDO_ORDINATE_ARRAY (105.000906,0.000411,............n) );//此处有10几万个集合,这里报错了。
EXECUTE IMMEDIATE 'INSERT INTO table(id,SHAPE) VALUES (''1'', :gm )' USING geom0; END;
END;

  • 写回答

1条回答 默认 最新

  • $encoding 2023-03-26 19:32
    关注

    表PLS-00123的具体错误信息:

    PLS-00123: 程序太大

    这个错误信息通常出现在代码块或存储过程等程序单元太大时。导致这个错误的原因可能是代码太复杂,拥有过多变量和表达式,以至于编译器不能编译过程。对于你所面临的问题,可能是数据量太大,导致存储空间不足,进而导致PL/SQL程序编译失败。

    为了解决这个问题,你可以考虑以下方案:

    1.分批次插入数据。尝试分割数据块,然后逐个插入。这样可以把大的数据块分解成多个小的数据块,每个数据块的大小可以适应程序和数据库的限制。

    2.增加主存或数据库空间。你可以考虑增加内存或硬盘空间,以便能更好地存储数据。如果你的计算机已经使用了多数物理内存,那么你可以使用大容量硬盘或者分布式文件系统等。

    3.使用更快的查询方案。你可以尝试 Oracle Spatial 中的更快的查询方案来操作数据库,例如使用一些高效的索引算法(如r树),或者使用空间分区等方法。

    希望以上信息能对你有所帮助。

    评论

报告相同问题?

悬赏问题

  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码