外部数据包装器FDW(FOREIGN DATA WRAPPER)是PostgreSQL提供用于访问外部数据的插件,外部数据源包括本实例中其它库中的数据或其他实例的数据。Ganos 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;
文档内容是否对您有帮助?