shp2pgsql向postgresql导入shape数据

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

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

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

 -s 表明指定数据的SRID为3857数据库

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

 -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)”错误,这时候指定正确的字符集便可解决方问题。spa

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

3.1 登陆postgres用户,创建空的数据库,指定数据的全部者是gisdb用户(或者你数据库内的任意现有用户)htm

CREATE DATABASE shp2pgsqldemo WITH OWNER=gisdb;

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

\c shp2pgsqldemo;

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_topology;

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

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

4. 验证数据class

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条数据

相关文章
相关标签/搜索