postgres數(shù)據(jù)庫(kù)如何移機(jī)

瀏覽:93 發(fā)布日期:2023-04-26 00:00:00 投稿人:佚名投稿

1、PostgreSQL如何導(dǎo)入數(shù)據(jù)

用我寫(xiě)的軟件可以用excel導(dǎo)入到postgresql,你上網(wǎng)找fitreport就行了。
或者這樣做:
可以寫(xiě)語(yǔ)句或采用以下的方法
網(wǎng)上轉(zhuǎn)錄下來(lái)的方法:
步驟:
1.將excel表格字段,按照postgresql
數(shù)據(jù)庫(kù)中表的字段順序來(lái)整理數(shù)據(jù),并保存為csv文件。
2.用記事本打開(kāi)csv文件,另存為utf-8格式。
3.使用pgadmin客戶(hù)端鏈接postgresql數(shù)據(jù)庫(kù),執(zhí)行如下腳本,導(dǎo)入csv文件到postgresql數(shù)據(jù)表:
copy
testdata
from
'd:/test/testdata.csv'
delimiter
as','
csv
quote
as
'"'
注:testdata
是postgresql數(shù)據(jù)庫(kù)表的名稱(chēng)。
注意事項(xiàng):
1.test目錄需要賦予postgres
用戶(hù)可讀寫(xiě)的權(quán)限,否則會(huì)有如下報(bào)錯(cuò)信息:
error:
could
not
open
file
"d:/testdata2.csv"
forwriting:
permission
denied
2.csv文件要為utf-8格式,否則導(dǎo)入時(shí)可能會(huì)有報(bào)錯(cuò):
error:
invalid
bytesequence
for
encoding
"utf8":
0xcdf5
3.注意windows環(huán)境下文件路徑的表述方式,如:d:/test/data.csv windows下
運(yùn)行pg_dumpall > outfile

linux下
psql -f outfile postgres

如果是在兩臺(tái)不同的計(jì)算機(jī)上,虛擬機(jī)當(dāng)然也算,同時(shí)啟動(dòng)兩臺(tái)電腦的postgres服務(wù)

可以
pg_dump -h host1 dbname | psql -h host2 dbname

如果數(shù)據(jù)庫(kù)比較簡(jiǎn)單,建議直接在新的數(shù)據(jù)庫(kù)中,新建表等邏輯結(jié)構(gòu),在通過(guò)舊的數(shù)據(jù)庫(kù)中運(yùn)行copy table to file with csv
新的數(shù)據(jù)庫(kù)中運(yùn)行copy table from file with csv導(dǎo)入數(shù)據(jù)

其他方式和具體情況可以看文檔http://www.postgresql.org/docs/8.3/interactive/backup.html

2、如何備份和恢復(fù)VCSA 5.5自帶的vPostgres數(shù)據(jù)庫(kù)

首先,數(shù)據(jù)庫(kù)的安全就會(huì)涉及到備份了,而我們?cè)赩AMI UI上面是沒(méi)有找到如何備份這個(gè)VCSA的數(shù)據(jù)庫(kù)的,更不用說(shuō)恢復(fù)了,因此,本文就著眼于如何備份和恢復(fù)它了;
1、利用SSH或者直接登錄到VCSA 5.5的CLI界面,缺省用戶(hù)名為root,缺省密碼為vmware;
2、然后執(zhí)行如下命令,將路徑切換到vpostgres程序所在目錄:
#cd /opt/vmware/vpostgres/1.0/bin
3、執(zhí)行如下命令備份VCSA 5.5的vpostgres數(shù)據(jù)庫(kù):
#./pg_dump EMB_DB_INSTANCE -U EMB_DB_USER -Fp -c > VCDB_Backup
說(shuō)明:VCDB_Backup這個(gè)名字可以自由定義,它就是備份出來(lái)的文件名;
4、注意,需要EMB_DB_USER的密碼,可以在如下路徑的文件中找到:
/etc/vmware-vpx/embedded_db.cfg
利用vi編輯器或其它編輯器打開(kāi)后,如下圖所示,可以看到它的密碼是什么:
5、如果需要恢復(fù)備份的數(shù)據(jù)庫(kù),可以執(zhí)行如下命令:
#PGPASSWORD=EMB_DB_PASSWORD ./psql -db EMB_DB_INSTANCE -Upostgres - f VCDB_Backup

3、如何導(dǎo)入PostgreSQL數(shù)據(jù)庫(kù)數(shù)據(jù)

說(shuō)起數(shù)據(jù)庫(kù),大家耳熟能詳?shù)纳虡I(yè)數(shù)據(jù)庫(kù)產(chǎn)品當(dāng)推Oracle、微軟的SqlServer和IBM的

DB2等,而開(kāi)源數(shù)據(jù)庫(kù)中則有兩大產(chǎn)品MySQL和PostgreSQL。

PostgreSQL 是一種對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),也是目前功能最強(qiáng)大、

特性最豐富和最復(fù)雜的自由軟件數(shù)據(jù)庫(kù)系統(tǒng)。它起源于伯克利(BSD)的數(shù)據(jù)庫(kù)研究計(jì)劃,

目前是最重要的開(kāi)源數(shù)據(jù)庫(kù)產(chǎn)品開(kāi)發(fā)項(xiàng)目之一,有著非常廣泛的用戶(hù)。

PostgreSQL 可以說(shuō)是最富特色的自由數(shù)據(jù)庫(kù)管理系統(tǒng),也有人認(rèn)為可以是最強(qiáng)大的自由

軟件數(shù)據(jù)庫(kù)管理系統(tǒng)。PostgreSQL 是唯一支持事務(wù)、子查詢(xún)、多版本并行控制系統(tǒng)、數(shù)據(jù)完

整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng)。能在多平臺(tái)下---包括Linux、

FreeBSD和Windows等---運(yùn)行,并且支持多語(yǔ)言的開(kāi)發(fā)。

在兩大開(kāi)源數(shù)據(jù)庫(kù)產(chǎn)品的對(duì)比中,一般認(rèn)為MySQL速度更快,所以得到更為廣泛的使

用;而PostgreSQL性能更為先進(jìn),PostgreSQL 提供很多 MySQL 目前所不支持的特性,比

如觸發(fā)器、視圖、存儲(chǔ)過(guò)程等等,在記錄數(shù)超千萬(wàn)之后性能表現(xiàn)尤其出色。

當(dāng)前的最新版本是PostgreSQL 8.2.3,官方網(wǎng)站是:

www.postgresql.org

1.2 什么是PostGIS

PostGIS在對(duì)象關(guān)系型數(shù)據(jù)庫(kù)PostgreSQL上增加了存儲(chǔ)管理空間數(shù)據(jù)的能力,相當(dāng)于

Oracle的spatial部分。PostGIS最大的特點(diǎn)是符合并且實(shí)現(xiàn)了OpenGIS的一些規(guī)范,是最著

名的開(kāi)源GIS數(shù)據(jù)庫(kù)。

當(dāng)前的最新版本是PostGIS 1.2.1,官方網(wǎng)站是:

www.postgis.org

二 PostgreSQL和PostGIS的安裝

2.1 在windows下安裝。

新版本的PostgreSQL在其安裝程序中集成了PostGIS,只需要在安裝過(guò)程中選中

PostGIS和pgsql項(xiàng)就可以了。

2.2 在Debian下安裝PostGIS

# apt-get install postgresql-8.1 postgresql-8.1-postgis

當(dāng)前Etch中的版本:PostgreSQL是8.1.7,而PostGIS是1.1.6,雖然不是最新的版本,

但已經(jīng)足夠了。

還需要做的工作是:

1) 創(chuàng)建一個(gè)專(zhuān)門(mén)用于PostGIS的數(shù)據(jù)庫(kù)并為專(zhuān)用數(shù)據(jù)庫(kù)導(dǎo)入PostGIS支持:

# su – postgres

$ cd /usr/share/postgresql-8.1-postgis

$ createdb wen1

$ createlang plpgsql wen1

$ psql -d wen1 -f lwpostgis.sql

$ psql -d wen1 -f spatial_ref_sys.sql

2) 創(chuàng)建一個(gè)專(zhuān)門(mén)的用戶(hù),并把相應(yīng)的數(shù)據(jù)庫(kù)和數(shù)據(jù)表的屬主設(shè)置為該用戶(hù):

# su – postgres

$ psql

$ create user wen1 password ‘123456’;

$ alter database wen1 owner to wen1;

$ alter table spatial_ref_sys owner to wen1;

$ alter table geometry_columns owner to wen1 ;

3) 修改PostgreSQL配置文件以便可以遠(yuǎn)程使用。

修改PostgreSQL的配置文件/etc/postgresql/8.1/main/Postgresql.conf,將其中的一句:

listen_address=’localhost’

前面的注釋去掉,并把’localhost’該為’*’。

修改Postgresql的配置文件/etc/postgresql/8.1/main/pg_hba.conf,在文件后面加一句:

host all all 192.168.0.0/24 password

這句的意思是:同網(wǎng)絡(luò)中192.168.0.*的機(jī)器可以以密碼的形式使用所有的數(shù)據(jù)庫(kù)。更具

體的參數(shù)意義直接看該配置文件中的注釋就可以了。

這里一定要配置正確,否則無(wú)法在遠(yuǎn)程連接PostgreSQL數(shù)據(jù)庫(kù)。

2.3 源碼安裝PostgreSQL和PostGIS

參閱以前寫(xiě)的老文章。

三 PostGIS的使用

要使用PostGIS,需要兩方面的預(yù)備知識(shí),一是要熟悉基本的SQL語(yǔ)法;二是熟悉

PostgreSQL數(shù)據(jù)庫(kù)的基本使用。

(一) 快速入門(mén)

我們使用前面創(chuàng)建的數(shù)據(jù)庫(kù)wen2,用戶(hù)為wen1,現(xiàn)在創(chuàng)建一個(gè)包含三個(gè)點(diǎn)的數(shù)據(jù)庫(kù)

test1:

首先在Etch下以wen1登陸,然后打開(kāi)wen2數(shù)據(jù)庫(kù):

$ psql -d wen2 ;

再在PostgreSQL的控制臺(tái)下輸入以下命令:

wen2=> create table test1 (myID int4, pt geometry, myName
varchar );

wen2=> insert into test1 values (1, 'POINT(0 0)', 'beijing'
);

wen2=> insert into test1 values (2, 'POINT(31.5 60.87)',
'shanghai' );

wen2=> insert into test1 values (3, 'POINT(10.77 85.902)',
'tianjin' );

這樣我們利用PostGIS創(chuàng)建了一個(gè)包含三個(gè)點(diǎn)的GIS數(shù)據(jù)表。

為了能在QGIS中打開(kāi)這一圖層,我們還需要為數(shù)據(jù)表創(chuàng)建一個(gè)主鍵:

wen2=>alter table test1 add primary key (myID);

可以看到PostGIS的使用其實(shí)就相當(dāng)于使用一個(gè)經(jīng)過(guò)擴(kuò)展的SQL語(yǔ)法,上述語(yǔ)句熟悉

SQL語(yǔ)法的人一看都很熟悉,都是普通的SQL語(yǔ)句,不同的只不過(guò)是增加了PostGIS特殊的

geometry數(shù)據(jù)類(lèi)型。

你可以再試試這些SQL語(yǔ)句:

select * from test1;

select myID,AsText(pt) from test1;

select Distance(pt, 'POINT(0 0)') from test1;

(二) PostGIS的Geometry數(shù)據(jù)類(lèi)型

Geometry可以說(shuō)是PostGIS最重要的一個(gè)概念,是“幾何體”的意思,由于PostGIS很

好地遵守OGC的”Simple Feature for Specification for
SQL”規(guī)范,目前支持的幾何體類(lèi)型包

含其實(shí)例有:

POINT(1 1)

MULTIPOINT(1 1, 3 4, -1 3)

LINESTRING(1 1, 2 2, 3 4)

POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))

MULTIPOLYGON((0 0, 0 1, 1 1, 1 0, 0 0), (5 5, 5 6, 6 6, 6 5, 5
5))

MULTILINESTRING((1 1, 2 2, 3 4),(2 2, 3 3, 4 5))

而geometry具體表現(xiàn)又有兩種形式,一種叫做WKT(Well Known Text)形式,如上面的

例子?;蛘呤褂萌缦耂QL語(yǔ)句瀏覽:

select AsText(pt) from test1;

另一種叫做“Canonical Form”形式,看上去是一串古怪的數(shù)字,其實(shí)是一種增強(qiáng)的十六

進(jìn)制編碼,使用如下SQL語(yǔ)句就可以瀏覽了:

select pt from test1;

(三) 讀寫(xiě)PostGIS數(shù)據(jù)

建設(shè)好PostGIS數(shù)據(jù)庫(kù)之后,我們現(xiàn)在需要進(jìn)行讀寫(xiě)GIS數(shù)據(jù)了,包括把GIS寫(xiě)入到

PostGIS數(shù)據(jù)庫(kù)中以及在應(yīng)用程序中使用PostGIS數(shù)據(jù)庫(kù)的數(shù)據(jù)。讀寫(xiě)PostGIS目前主要有以

下四種方式:

3.1 使用psql語(yǔ)言

Psql語(yǔ)言是PostgreSQL內(nèi)嵌的一個(gè)命令行工具,其語(yǔ)法基本上和標(biāo)準(zhǔn)的SQL語(yǔ)法是一

致的,可以使用Psql工具,結(jié)合標(biāo)準(zhǔn)SQL語(yǔ)法和一些PostGIS的擴(kuò)展對(duì)PostGIS數(shù)據(jù)庫(kù)進(jìn)行

讀寫(xiě)操作。

具體例子如上面“快速入門(mén)”中的例子。

這種方式功能強(qiáng)大,但全部需要手工操作,煩瑣且繁重。

3.2 使用一些小工具

有兩個(gè)很有用的小的轉(zhuǎn)換工具,一是shp2pg;一是ogr2ogr

3.2.1 shp2pgsql和pgsql2shp

shp2pgsql和pgsql2shp是PostGIS自身攜帶的一對(duì)在Shape文件和PostGIS數(shù)據(jù)庫(kù)之間進(jìn)

行轉(zhuǎn)換的工具,在Debian中安裝好PostGIS之后,這兩個(gè)程序已經(jīng)位于可執(zhí)行文件的搜索路

徑上,因此可以在系統(tǒng)中任何位置使用。

假如當(dāng)前目錄下有完整的china.shp文件(應(yīng)該有三個(gè)同名不同擴(kuò)展名的文件),需要把其

中數(shù)據(jù)輸入到上述的wen2數(shù)據(jù)庫(kù)中的數(shù)據(jù)表china_postgis中,具體操作為(操作用戶(hù)為

wen1):

$ shp2pgsql china china_postgis > tmp.sql

$ psql -d wen2 -f roads.sql

這個(gè)工具很好用,缺點(diǎn)在于使用范圍有限,只針對(duì)Shape文件格式。

3.2.2 ogr2ogr

PostGIS本身的shp2pg工具只把shape文件轉(zhuǎn)換到PostGIS 數(shù)據(jù)庫(kù)中,那如何把其他的

GIS數(shù)據(jù)加入呢?比如說(shuō)MapInfo的mid格式,ESRI的e00格式呢?這就要使用ogr這個(gè)工

具了。

Ogr目前是gdal的一個(gè)組成部分,那什么是gdal呢?其官方主頁(yè)(http://www.gdal.org)上

如此介紹:

GDAL is a translator library for raster geospatial data formats
that is released under an X/MIT

style Open Source license by the Open Source Geospatial
Foundation. As a library, it presents a

single abstract data model to the calling application for all
supported formats. It also comes with a

variety of useful commandline utilties for data translation and
processing.

簡(jiǎn)單地說(shuō),Gdal是一個(gè)各種Gis數(shù)據(jù)格式的轉(zhuǎn)換軟件庫(kù),ogr則是轉(zhuǎn)換矢量GIS數(shù)據(jù)的

軟件庫(kù)。

目前ogr能夠支持的數(shù)據(jù)格式包括:

Arc/Info Binary Coverage、DWG、ESRI Personal
GeoDatabase、ArcSDE、ESRI

Shapefile、GML、GRASS、Mapinfo File、Microstation DGN、ODBC、Oracle
Spatial和

PostgreSQL等。應(yīng)該說(shuō),這就基本包括了我們平常用到的所有矢量型GIS文件格式了。

Gdal支持的柵格數(shù)據(jù)格式參閱http: //www.gdal.org/formats_list.html

下面我們從源碼編譯安裝gdal---因?yàn)槲以贒ebian下使用apt方式安裝的gdal并不支持

postgresql數(shù)據(jù)庫(kù),其實(shí)更為簡(jiǎn)便的方法也許是去gdal.org下載一個(gè)Fwtools的工具包,可以

直接運(yùn)行不用繁瑣的編譯,既有Windows的,也有Linux下用的,只不過(guò)這個(gè)包有些大。

1) 下載最新的gdal-1.3.2

2) 解壓

3) ./configure --prefix=/opt/gdal
--with-pg=/opt/pg/bin/pg_config --without-ogdi

這里我習(xí)慣把軟件安裝在/opt目錄下。

--with-pg參數(shù)很重要,使ogr可以支持PostGIS,后面的參數(shù)是我的PostGIS安裝的地方。

我在這里編譯很多次失敗,經(jīng)過(guò)仔細(xì)查找,發(fā)現(xiàn)問(wèn)題出在ogdi上,所以暫時(shí)我只好使

它不支持ogdi。

4) make

5) make install

下面是使用過(guò)程,假設(shè)現(xiàn)在我要把一個(gè)rai.mid文件導(dǎo)入到數(shù)據(jù)庫(kù)data1中:

$ ogr2ogr –f Postgresql PG:dbname=data1 rai.mid

注意,f參數(shù)后面跟的是導(dǎo)入的數(shù)據(jù)類(lèi)型,最后那個(gè)文件才是要導(dǎo)出的文件。PG后面說(shuō)

明的是數(shù)據(jù)庫(kù)的名字,需要是已經(jīng)創(chuàng)建好的數(shù)據(jù)庫(kù),而數(shù)據(jù)表則由程序自動(dòng)創(chuàng)建。還要特別

注意權(quán)限問(wèn)題,以上命令我是由postgres用戶(hù)執(zhí)行的。

還有一個(gè)要注意的是主鍵問(wèn)題。一般情況下,你使用shp2pg或者 ogr2ogr向postgis中

增加了Gis數(shù)據(jù)后,在GIS客戶(hù)端添加postgis圖層的時(shí)候,常常會(huì)因?yàn)閿?shù)據(jù)表沒(méi)有定義主鍵

而出錯(cuò),解決的辦法是,在服務(wù)器上使用psql或者其他sql工具,使用命令:

alter table table_name add primary key (column_name);

另外我們發(fā)現(xiàn)ogr竟然是不支持最常見(jiàn)的GIS格式e00格式,好象是因?yàn)榘鏅?quán)方面的原

因吧。解決的方法就是去sf.net查找相關(guān)工具。我在上面就找到一個(gè)e002pg工具,支持將

e00文件導(dǎo)入到postGIS數(shù)據(jù)庫(kù)中。

3.3 在其他GIS軟件中讀寫(xiě)PostGIS數(shù)據(jù)

比如在QGIS中,能夠打開(kāi)PostGIS圖層,還有SPIT插件可以把Shape文件輸入到

PostGIS數(shù)據(jù)庫(kù)中。

其他GIS軟件如uDig,Grass等,甚至連ArcInfo都支持或部分支持讀寫(xiě)PostGIS數(shù)據(jù)。

3.4 利用接口在應(yīng)用程序中讀寫(xiě)PostGIS數(shù)據(jù)

廣大的開(kāi)源GIS程序員幾乎為每一種程序設(shè)計(jì)語(yǔ)言設(shè)計(jì)好了讀寫(xiě)PostGIS的接口,如利

用PostgreSQL的JDBC庫(kù),可以使用Java語(yǔ)言在程序中讀寫(xiě)PostGIS數(shù)據(jù);利用libpq庫(kù),

可以使用C語(yǔ)言讀寫(xiě)PostGIS數(shù)據(jù)。

(四) 使用PostGIS函數(shù)

4.1 PostGIS函數(shù)

要能熟練使用PostGIS,掌握PostGIS的所有函數(shù)是關(guān)鍵。通過(guò)掌握這些PostGIS函數(shù),

我們能夠高效、穩(wěn)定地處理各種地理數(shù)據(jù)。由于PostGIS的函數(shù)設(shè)計(jì)時(shí)都遵守OpenGIS規(guī)范,

我們也可以把這些PostGIS叫做OpenGIS函數(shù)。

4.2 PostGIS函數(shù)的分類(lèi)

PostGIS函數(shù)大致可以分為以下四類(lèi)

1) 字段處理函數(shù)

這類(lèi)函數(shù)當(dāng)前一共有3個(gè),分別是:

AddGeometryColumn(var1,var2,var3,var4,var5,var6):為已有的數(shù)據(jù)表增加一個(gè)地理幾何

數(shù)據(jù)字段。Var1代表數(shù)據(jù)表的模式(schema)的名字,一般是public,也可以省略,則使用當(dāng)

前的缺省模式;var2是已有的數(shù)據(jù)表的名字;var3是新的地理數(shù)據(jù)字段的名字;var4是

SRID值,不確定的話就取-1吧;var5是地理數(shù)據(jù)的類(lèi)型,可以是POINT等;var6是指該幾

何數(shù)據(jù)是二維還是三維數(shù)據(jù)。

前面的SQL語(yǔ)句 create table test1 (myID int4, pt geometry, myName
varchar )更規(guī)范的寫(xiě)

法為:

create table test1 (myID int4, myName varchar );

select AddGeometryColumn('test1','pt',-1,'GEOMETRY',2);

DropGeometryColumn函數(shù)顯然是刪除一個(gè)地理數(shù)據(jù)字段的;

SetSRID函數(shù)顯然是設(shè)置SRID值的。

2) 幾何關(guān)系函數(shù)

這類(lèi)函數(shù)目前共有10個(gè),分別是:

Distance Equals Disjoint Intersects Touches Crosses Within
Overlaps Contains Relate

3) 幾何分析函數(shù)

這類(lèi)函數(shù)目前共有12個(gè),分別是:Centroid Area Lenth PointOnSurface Boundary
Buffer

ConvexHull Intersection SymDifference Difference GeomUnion
MemGeomUnion

4) 讀寫(xiě)函數(shù)

這類(lèi)函數(shù)很多,主要是用于在各種數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換,尤其是在于Geometry數(shù)據(jù)類(lèi)

型與其他如字符型等數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換,函數(shù)名如AsText、GeomFromText等,其作用是

顯然的。

4.3 PostGIS函數(shù)使用示例。

假設(shè)在我們的wen2數(shù)據(jù)庫(kù)中,有兩張表,一張為guojia,是從“國(guó)家基礎(chǔ)地理數(shù)據(jù)”

網(wǎng)站下載的國(guó)界數(shù)據(jù)表,數(shù)據(jù)類(lèi)型為L(zhǎng)INE;二為shengqu_polygon,也從同一個(gè)網(wǎng)站下載,

地理數(shù)據(jù)類(lèi)型為多邊形。

1) 查詢(xún)我國(guó)邊境線的長(zhǎng)度:

wen1=> select sum(length(the_geom)) as lenth from guojie;

2) 查詢(xún)我國(guó)面積最大的省區(qū)名字:

wen1=> select name area(the_geom) as myarea

from shengqu_polygon

order by myarea DESC

LIMIT 1;

(五) 使用PostGIS擴(kuò)展函數(shù)

除了上述遵循OpenGIS的函數(shù)之外,PostGIS還自行擴(kuò)展了一些當(dāng)前OpenGIS規(guī)范之外

的函數(shù),主要包括以下幾類(lèi):

5.1 管理類(lèi)函數(shù)

擴(kuò)展的管理類(lèi)函數(shù)主要包括一些軟件版本查詢(xún)函數(shù),如

postgis_version()、postgis_geos_version()、postgis_proj_version()函數(shù)等,分別查詢(xún)當(dāng)前的

PostGIS的版本及其使用的Geos和Proj庫(kù)的版本。

5.2 數(shù)據(jù)類(lèi)型的輸入輸出函數(shù)

除了OpenGIS定義的地理數(shù)據(jù)類(lèi)型之外,PostGIS還對(duì)數(shù)據(jù)類(lèi)型進(jìn)行了擴(kuò)展,這種擴(kuò)展

主要是兩方面的擴(kuò)展,一是把二維的數(shù)據(jù)向三維和四維擴(kuò)展;二就是在WKT和WKB數(shù)據(jù)

類(lèi)型基礎(chǔ)上擴(kuò)展出EWKT和EWKB數(shù)據(jù)類(lèi)型。

PostGIS提供了在這些地理數(shù)據(jù)類(lèi)型和常用數(shù)據(jù)類(lèi)型如字符型、浮點(diǎn)型數(shù)據(jù)之間進(jìn)行轉(zhuǎn)

換的函數(shù)。

5.3 量算函數(shù)

如length3d函數(shù)是對(duì)length2d函數(shù)的擴(kuò)展。

5.4 幾何操作函數(shù)

如addBBox(geometry)函數(shù)給所給的幾何體加上一個(gè)邊框。

如simplify(geometry,tolerance)函數(shù)可以對(duì)折線和多邊形利用Douglas-Peuker算法進(jìn)行一

些節(jié)點(diǎn)進(jìn)行刪除,從而使表現(xiàn)的圖形更簡(jiǎn)單而清晰,在網(wǎng)絡(luò)傳輸數(shù)據(jù)時(shí)具有更高的效率。

5.5 操作符號(hào)

5.6 其他擴(kuò)展函數(shù)

(六) 建立PostGIS索引

當(dāng)數(shù)據(jù)庫(kù)的記錄增大的時(shí)候,如果沒(méi)有建立索引的話,操作的效率就顯著下降。

POstGIS建議當(dāng)記錄數(shù)超過(guò)幾千的時(shí)候就應(yīng)該建立索引,而GIS數(shù)據(jù)庫(kù)一般都是海量數(shù)據(jù),

所以對(duì)PostGIS而言,索引就非常重要。

Shapfile文件為ESRI公司的文件存儲(chǔ)格式,并且得到了業(yè)界廣泛的支持。Shapfile格式是一種簡(jiǎn)單的,用非拓樸關(guān)系的形式存儲(chǔ)幾何位置和地
理特征的屬性信息的格式。雖然GeoServer采用Shapfile文件可以快速的創(chuàng)建網(wǎng)上地圖服務(wù),但它的缺點(diǎn)確很明顯:

  1、Shapefile只支持一個(gè)圖層,在實(shí)際中沒(méi)有意義。

  2、直接保用SHP文件不安全,Shapfile文件很容易被病毒或其他原因誤刪除。

  3、GeoServer中用Shapfile文件作數(shù)據(jù)源的效率是很低的。

  4、Shapfile中的漢字GeoServer不能解析,會(huì)出現(xiàn)亂碼。

  5、數(shù)據(jù)庫(kù)可以方便的對(duì)地理信息進(jìn)行查詢(xún)。

用PostGIS管理空間數(shù)據(jù)

  PostGIS支持GIST空間索引(附錄1)、規(guī)范窗體,能很大的提高處理效率。

  
OGC格式只提供二維的幾何體,且相關(guān)聯(lián)的SRID從未深入的用于輸入輸出請(qǐng)求,PostGIS支持OpenGIS組織"Simple
Features for
SQL"規(guī)范指定的所有GIS對(duì)象和函數(shù),并進(jìn)行了擴(kuò)展,格式是EWKB、EWKT,其中增加了對(duì)3DZ,3DM和4D
坐標(biāo)系的支持(當(dāng)然三維、四維數(shù)據(jù)的OGC標(biāo)準(zhǔn)還未完全制定),深入引進(jìn)了SRID信息。

  空間數(shù)據(jù)表結(jié)構(gòu):PostGIS中存在兩個(gè)必需的元數(shù)據(jù)表格, SPATIAL_REF_SYS(空間參考表格) 和
GEOMETRY_COLUMNS(幾何體屬性列),兩個(gè)表用于存儲(chǔ)空間數(shù)據(jù)庫(kù)使用的坐標(biāo)系統(tǒng)數(shù)字ID和文本描述。

  PostGIS的shp2pgsql命令可以將Shapfile直接導(dǎo)入到數(shù)據(jù)庫(kù)中也可以導(dǎo)出為SQL文件,推薦先導(dǎo)出為SQL文件再將此文件在SQL運(yùn)行窗口中執(zhí)行可將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)。

Shapfile到SQL語(yǔ)句:

  shp2pgsql 路徑shp數(shù)據(jù)文件名 新建的數(shù)據(jù)表名 >
路徑SQL文件名.sql

Shapfile直接入庫(kù):

  shp2pgsql -c 路徑shp數(shù)據(jù)文件名 新建的數(shù)據(jù)表名 數(shù)據(jù)庫(kù)名|psql -d 數(shù)據(jù)庫(kù)名

舉例說(shuō)明:

  如將一Shapfile文件“c:road.shp”導(dǎo)入到數(shù)據(jù)表“road”中,數(shù)據(jù)庫(kù)為“sjzmap”。

  1、運(yùn)行“命令提示符”。

  2、切換至PostgreSQL數(shù)據(jù)庫(kù)安裝目錄中的bin目錄下。

  3、執(zhí)行此目錄下的shp2pgsql命令:“shp2pgsql c:road.shp road >
c:road.sql”。

  4、如將此文件直接導(dǎo)入數(shù)據(jù)庫(kù)(不推薦):“shp2pgsql -c c:road.shp road
sjzmap | psql -d sjzmap”。

5、使用pgAdmin3
選擇數(shù)據(jù)庫(kù),再導(dǎo)入表。

4、如何將Postgres備份文件.backup導(dǎo)入到新的數(shù)據(jù)庫(kù)中

打開(kāi)數(shù)據(jù)庫(kù)的企業(yè)管理器,點(diǎn)擊到數(shù)據(jù)庫(kù),

右鍵,里邊有一項(xiàng)所有任務(wù) 可以附加數(shù)據(jù)庫(kù),

然后選擇你的數(shù)據(jù)庫(kù)pgsql的路徑的mdf文件,確定就好

5、如何導(dǎo)入PostgreSQL數(shù)據(jù)庫(kù)數(shù)據(jù)

1、安裝postgresql
yum install postgresql postgresql-server
mysql占用端口3306 pgsql是5432

2、導(dǎo)入整個(gè)數(shù)據(jù)庫(kù)
psql -U postgres(用戶(hù)名) 數(shù)據(jù)庫(kù)名(缺省時(shí)同用戶(hù)名) < /data/dum.sql

3、導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)
pg_dump -h localhost -U postgres(用戶(hù)名) 數(shù)據(jù)庫(kù)名(缺省時(shí)同用戶(hù)名) >/data/dum.sql

4、導(dǎo)出某個(gè)表
pg_dump -h localhost -U postgres(用戶(hù)名) 數(shù)據(jù)庫(kù)名(缺省時(shí)同用戶(hù)名) -t table(表名) >/data/dum.sql

5、壓縮方法
一般用dump導(dǎo)出數(shù)據(jù)會(huì)比較大,推薦使用xz壓縮
壓縮方法 xz dum.sql 會(huì)生成 dum.sql.xz 的文件

6、xz壓縮數(shù)據(jù)倒數(shù)數(shù)據(jù)庫(kù)方法
xzcat /data/dum.sql.xz | psql -h localhost -U postgres(用戶(hù)名) 數(shù)據(jù)庫(kù)名(缺省時(shí)同用戶(hù)名)

如若滿意,請(qǐng)點(diǎn)擊右側(cè)【采納答案】,如若還有問(wèn)題,請(qǐng)點(diǎn)擊【追問(wèn)】

希望我的回答對(duì)您有所幫助,望采納!

轉(zhuǎn)載請(qǐng)帶上網(wǎng)址:http://www.svinexta.cn/posjitwo/93220.html

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。
聯(lián)系我們
訂購(gòu)聯(lián)系:小莉
微信聯(lián)系方式
地址:深圳市寶安區(qū)固戍聯(lián)誠(chéng)發(fā)產(chǎn)業(yè)園木星大廈

公司地址:深圳市寶安區(qū)固戍聯(lián)誠(chéng)發(fā)產(chǎn)業(yè)園木星大廈

舉報(bào)投訴 免責(zé)申明 版權(quán)申明 廣告服務(wù) 投稿須知 技術(shù)支持:第一POS網(wǎng) Copyright@2008-2030 深圳市慧聯(lián)實(shí)業(yè)有限公司 備案號(hào):粵ICP備18141915號(hào)