zoukankan      html  css  js  c++  java
  • 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条数据

  • 相关阅读:
    TypeScript 源码详细解读(3)词法2-标记解析
    TypeScript 源码详细解读(2)词法1-字符处理
    TypeScript 源码详细解读(1)总览
    7年编程语言设计精华总结——写给想创造或正在创造一门新编程语言的同学
    我为什么开发新语言
    CLR值类型和引用类型
    运行时内存模型
    IronPython之基本类型
    .NET 应用程序域?
    .NET程序如何启动?
  • 原文地址:https://www.cnblogs.com/think8848/p/6929351.html
Copyright © 2011-2022 走看看