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

相關文章
相關標籤/搜索