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