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條數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM