外部資料封裝器FDW(FOREIGN DATA WRAPPER)是PostgreSQL提供用於訪問外部資料的外掛程式,外部資料源包括本執行個體中其它庫中的資料或其他執行個體的資料。GanosBase FDW提供了對於多種空間資料類型的統一訪問,會自動將幾何空間資料類型映射為Geometry欄位類型,從而允許與資料庫內部表進行統一地訪問與查詢。
操作步驟
建立時空引擎FDW外掛程式。
您可以通過以下兩種方式建立擴充。
使用CASCADE關鍵字建立擴充。
CREATE EXTENSION ganos_fdw WITH schema public CASCADE;
說明建議將擴充安裝在public模式下,避免出現許可權問題。
直接建立ganos_fdw擴充。
CREATE EXTENSION ganos_spatialref; CREATE EXTENSION ganos_geometry; CREATE EXTENSION ganos_fdw;
將空間資料檔案註冊為外表。
註冊Shapefile。
SELECT ST_RegForeignTables('OSS://<access_id>:<secrect_key>@[<Endpoint>]/<bucket>/path_to/filet');
說明各參數解釋如下:
ak_id和ak_secret分別為OSS訪問的AccessKey資訊,具體請參見擷取AccessKey ID和Secret。
Endpoint為OSS服務的Endpoint(地區節點)。為保證資料的可訪問性,請確保雲資料庫與OSS所在Region相同,並使用內部Endpoint地址。 相關資訊請參考OSS Endpoint。
/<bucket>/path_to/file
為檔案在OSS中的路徑。如果使用Shapefile檔案,一個完整的Shapefile檔案至少包含三個必須的相關檔案:.shp、.shx和.dbf
,且必須上傳至同一個OSS檔案夾中。
通過
information_schema.foreign_tables
視圖查詢註冊的FDW表。SELECT foreign_table_name FROM information_schema.foreign_tables ORDER BY foreign_table_name ASC;
查詢外表。
SELECT fid, ST_AsText(geom), name, age, height FROM poly WHERE fid = 1;
結果樣本:
fid | ST_AsText(geom) | name | age | height -------------------------------------------------------------------- 1 | POLYGON((5 0,0 0,0 10,5 10,5 0)) | ZhangShan | 35 | 1.84
匯入到資料庫表中。
如果未建立表,使用如下命令建立並插入資料。
CREATE TABLE poly_db AS SELECT * FROM poly;
如果表已建立,可以通過以下兩種方式匯入資料。
通過INSERT SELECT方式:
INSERT INTO poly_db SELECT * FROM poly;
通過IMPORT FOREIGN SCHEMA方式:
CREATE SCHEMA imp; IMPORT FOREIGN SCHEMA ganos_fdw FROM SERVER ganos_fdw_server INTO imp;
(可選)刪除擴充。
DROP EXTENSION Ganos_FDW CASCADE;