FDW參考快速入門(mén)
外部數(shù)據(jù)包裝器FDW(FOREIGN DATA WRAPPER)是PostgreSQL提供用于訪問(wèn)外部數(shù)據(jù)的插件,外部數(shù)據(jù)源包括本實(shí)例中其它庫(kù)中的數(shù)據(jù)或其他實(shí)例的數(shù)據(jù)。Ganos FDW提供了對(duì)于多種空間數(shù)據(jù)類(lèi)型的統(tǒng)一訪問(wèn),會(huì)自動(dòng)將幾何空間數(shù)據(jù)類(lèi)型映射為Geometry字段類(lèi)型,從而允許與數(shù)據(jù)庫(kù)內(nèi)部表進(jìn)行統(tǒng)一地訪問(wèn)與查詢(xún)。
操作步驟
創(chuàng)建時(shí)空引擎FDW插件。
您可以通過(guò)以下兩種方式創(chuàng)建擴(kuò)展。
使用CASCADE關(guān)鍵字創(chuàng)建擴(kuò)展。
CREATE EXTENSION ganos_fdw WITH schema public CASCADE;
說(shuō)明建議將擴(kuò)展安裝在public模式下,避免出現(xiàn)權(quán)限問(wèn)題。
直接創(chuàng)建ganos_fdw擴(kuò)展。
CREATE EXTENSION ganos_spatialref; CREATE EXTENSION ganos_geometry; CREATE EXTENSION ganos_fdw;
將空間數(shù)據(jù)文件注冊(cè)為外表。
注冊(cè)Shapefile。
SELECT ST_RegForeignTables('OSS://<access_id>:<secrect_key>@[<Endpoint>]/<bucket>/path_to/filet');
說(shuō)明各參數(shù)解釋如下:
ak_id和ak_secret分別為OSS訪問(wèn)的AccessKey信息,具體請(qǐng)參見(jiàn)獲取AccessKey ID和Secret。
Endpoint為OSS服務(wù)的Endpoint(地域節(jié)點(diǎn))。為保證數(shù)據(jù)的可訪問(wèn)性,請(qǐng)確保云數(shù)據(jù)庫(kù)與OSS所在Region相同,并使用內(nèi)部Endpoint地址。 相關(guān)信息請(qǐng)參考OSS Endpoint。
/<bucket>/path_to/file
為文件在OSS中的路徑。如果使用Shapefile文件,一個(gè)完整的Shapefile文件至少包含三個(gè)必須的相關(guān)文件:.shp、.shx和.dbf
,且必須上傳至同一個(gè)OSS文件夾中。
通過(guò)
information_schema.foreign_tables
視圖查詢(xún)注冊(cè)的FDW表。SELECT foreign_table_name FROM information_schema.foreign_tables ORDER BY foreign_table_name ASC;
查詢(xún)外表。
SELECT fid, ST_AsText(geom), name, age, height FROM poly WHERE fid = 1;
結(jié)果示例:
fid | ST_AsText(geom) | name | age | height -------------------------------------------------------------------- 1 | POLYGON((5 0,0 0,0 10,5 10,5 0)) | ZhangShan | 35 | 1.84
導(dǎo)入到數(shù)據(jù)庫(kù)表中。
如果未創(chuàng)建表,使用如下命令創(chuàng)建并插入數(shù)據(jù)。
CREATE TABLE poly_db AS SELECT * FROM poly;
如果表已創(chuàng)建,可以通過(guò)以下兩種方式導(dǎo)入數(shù)據(jù)。
通過(guò)INSERT SELECT方式:
INSERT INTO poly_db SELECT * FROM poly;
通過(guò)IMPORT FOREIGN SCHEMA方式:
CREATE SCHEMA imp; IMPORT FOREIGN SCHEMA ganos_fdw FROM SERVER ganos_fdw_server INTO imp;
(可選)刪除擴(kuò)展。
DROP EXTENSION Ganos_FDW CASCADE;