没错这时本博主的新坑,而且挖的好辛苦:
如何在对postgis插件各种误 *** 作导致postgis的相关表项被删除后,重新添加postgis插件
由于是小白,初来乍到,把postgis相关联的表一股脑的误删除了,导致postgresql提供的关于gis的一系列“ST_”(Space Type)功能函数都无法使用,然后就是各种慌张。
解决方案是:
1、确认当前pg数据库已经安装有postgis;
2、如果1成立,重新加载上postgis插件即可,加载方式为:在指定数据库对象的查询中写入以下语句:
CREATE EXTENSION postgis
这里我估计只是装了一个简单的postgis版本,它还有很多丰富的相关扩展我没有装上。只是目前这样 *** 作满足了我现在使用ST函数的要求。如果还有插件缺失,我认为用类似方法可以得到解决。
3、如果1不成立,那么需要确认是否安装好postgis,没有则需要先安装postgis。
为什么某些表明明有这个字段,点击查询后显示此表不存在此字段
这一点是我写java查询句柄访问数据库时发生的错误,有关这一点还没有解决,例如我在输入:
select taxiNumber from taxiinfo
时,就会报出错误,表示没有此字段,因此只能暂用:`
select * from taxiinfo
然后再在代码中取结果的不同字段(取我想要的那个字段),这样把结果全部查出的方式应该是降低了代码的执行效率的。
大批量插入数据的优化方法
主要参考的是德哥的这篇文章,批量插入,最高可达插入 249088 条数据每秒,详见:
@L_404_0@
不知道为啥上面的地址总是挂掉,在此附上“德哥”的github主页,有需者可访问:
https://github.com/digoal
我采用了批量插入,且每次批量插入行数为5000条后,对于10GB的数据,原本需要8天,现在1天已经插入一半左右的数据了,因此在这做总结,发现批量插入确实能够提高插入效率,待我稍后检查插入数据是否正确。
注:下面是我写的代码,此部分可以不看。我采用的是java代码批量插入数据,代码为:
connection c = null;statement stmt = null;try{ Class.forname("org.postgresql.Driver"); c = DriverManager.getConnection("jdbc:postgresql://...","postgres","password"); stmt = c.createStatement(); ... String insertsql = "insert into ... values "; for(int i:insertListLength-2) insertsql += "(insertList[i].attribute1,insertList[i].attribute2,insertList[i].attribute3),...,insertList[i].attributen),"; insertsql += "(insertList[insertListLength-1].attribute1,insertList[insertListLength-1].attribute2,insertList[insertListLength-1].attributen);"; stmt.executeUpdate(insertsql); ...}catch(Exception e){ c.rollback();}finally{ stmt.close(); c.close();}
代码是我怕遗忘进行的记录,可不看。
未完待续 总结以上是内存溢出为你收集整理的做点Postgresql笔记全部内容,希望文章能够帮你解决做点Postgresql笔记所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)