shp2pgsql向postgresql导入shape数据

1. 准备好Shape文件(不仅仅是.shp文悠扬,还要有其他相关数据文件,包括.shx、.prj、.dbf文件)。

2. 使用命令将Shape数据转换为*.sql文件

shp2pgsql -s 3857 -c -W "GBK" CLLX.shp>CLLX.sql

 -s 代表指定数据的SRID为3857

 -c 代表数据将新建一个表,这里可能的选项是 -d 删除旧的表,重新建表并插入数据; -a 向现有表中追加数据; -p 仅创建表结构,不添加数据,这四个参数是互斥的。

 -W Shape文件中属性的字符集,通常Postgresql的字符集是UTF-8,有时候可能Shape数据中的字符集是其他,就可能报“Unable to convert data value to UTF-8 (iconv reports "无效或不完整的多字节字符或宽字符"). Current encoding is "UTF-8". Try "LATIN1" (Western European)”错误,这时候指定正确的字符集即可解决方问题。

3.建立空间数据库,并导入数据

3.1 登录postgres用户,建立空的数据库,指定数据的所有者是gisdb用户(或者你数据库内的任意现有用户)

CREATE DATABASE shp2pgsqldemo WITH OWNER=gisdb;

3.2 使用 \c shp2pgsqldemo; 切换到shp2pgsqldemo数据库,并安装PostGIS相关扩展(安装PostGIS请参见这里)

\c shp2pgsqldemo;

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_topology;

3.3 向数据库导入使用Shape数据生成的.sql文件

psql -d shp2pgsqldemo -U gisdb -f /tmp/shp/CLLX.sql -W

4. 验证数据

5.直接将Shape数据导入到数据表 

shp2pgsql -s 3857 -c -W "GBK" /tmp/shp/CLLX.shp public.CLLX2 | psql -d shp2pgsqldemo -U gisdb -W

这里值的一提的是,刚才我们已经建了一个cllx表了,如果再导入可以使用 -d 参数删了重建,我这里为了演示功能,使用 <SCHEMA>.<DBTABLE> 数据重新建了一个表 CLLX2 ,如下图红框中所示。另外在导入过程中需要输入数据库用户的密码,在红色箭头所示的地方,命令执行会中断,等待输入密码,只需要输入密码后回车即可向下执行。

5.1验证导入结果,发现有新建的cllx2表

共18条数据

 

转载于:https://www.cnblogs.com/think8848/p/6929351.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值