关于读取shape类型数据并存入oracle时使用SDO_GEOMETRY类型是遇到的坑。

本文记录了在将shape类型数据转换为SDO_GEOMETRY类型并导入Oracle数据库过程中遇到的问题。涉及到json数据格式转换,包括坐标值的提取、字符替换,以及当空间信息字段过长导致的插入失败。在SSM框架中,由于字段长度超过4000导致的错误,通过将shape字段改为jdbcType=CLOB并未解决问题,最终采用jdbc方式将shape字段转换为CLOB类型成功插入。
摘要由CSDN通过智能技术生成

由于公司业务需求,需要把shape类型数据导入数据库。期间遇到了一些坑,在此记录一下。

  • shape数据转成json格式后,存储为SDO_GEOMETRY空间数据类型,需要对数据格式再次进行转换。

json数据格式为:

{ 
	"coordinates": [ 
		[ 
			[ 
				[121.9803, 37.5592],  
				[121.9802, 37.5536],  
				[121.9694, 37.5536],   
				[121.9694, 37.5592],       
				[121.9803, 37.5592]         
			]      
		]   
	],
	   "type": "MultiPolygon"
}

需要的格式为:

MultiPolygon(((121.9803 37.5592,121.9802 37.5536,121.9694 37.5536,121.9694 37.5592,121.9803 37.5592)))

经过简单分析,可以取出坐标值,然后把"[","]"替换成"(",")",把逗号“,”替换为空格“ ”,再根据需要对字符串进行截取,然后就是把部分字符再替换为逗号。代码如下:

String coordinates=jsonObject.getString("coordinates")
                    .replace("[", "(").replace(",", " 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值