外部数据包装器FDW(FOREIGN DATA WRAPPER)是PostgreSQL提供用于访问外部数据的插件,外部数据源包括本实例中其它库中的数据或其他实例的数据。Ganos FDW提供了对于多种空间数据类型的统一访问,会自动将几何空间数据类型映射为Geometry字段类型,从而允许与数据库内部表进行统一地访问与查询。

操作步骤

  1. 创建时空引擎FDW插件。
    您可以通过以下两种方式创建扩展。
    • 直接创建Ganos_FDW扩展。
      CREATE EXTENSION ganos_spatialref;
      CREATE EXTENSION ganos_geometry;
      CREATE EXTENSION ganos_fdw;
    • 使用CASCADE关键字创建扩展。
      CREATE EXTENSION Ganos_FDW CASCADE;
  2. 将空间数据文件注册为外表。
    1. 注册Shapefile。
      SELECT ST_RegForeignTables('OSS://<ak_id>:<ak_secret>@<endpoint>/path/poly.shp');
      说明 ak_idak_secret分别为OSS访问的AccessKey信息,具体请参见获取AccessKey ID和SecretEndpoint为OSS的地域节点。为保证数据的可访问性,请确保云数据库与OSS所在Region相同,并使用内部endpoint地址。 相关信息请参考OSS endpoint
    2. 通过information_schema.foreign_tables视图查询注册的FDW表。
      SELECT foreign_table_name FROM information_schema.foreign_tables ORDER BY foreign_table_name ASC;
  3. 查询外表。
    SELECT fid, ST_AsText(geom), name, age, height FROM poly WHERE fid = 1;
    ------------
       1 | POLYGON((5 0,0 0,0 10,5 10,5 0)) | ZhangShan |  35 |   1.84 
  4. 导入到数据库表中。
    • 如果未创建表,使用如下命令创建并插入数据。
      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;
  5. (可选)删除扩展。
    DROP EXTENSION Ganos_FDW CASCADE;