OGR_FDW 使用说明
Note
此插件目前只支持 Yukon for Postgres 版本,安装包中包含有此插件。
安装
Centos 7 安装:
添加 PostgreSQL 软件源
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装 ogr_fdw
yum install -y ogr_fdw_13.x86_64
源码安装
下载好源码后,然后 ./configure
,make
,make install
即可。
需要注意的是:在编译时有可能需要导出 pg_config ,gdal_config 所在路径.
Note
如果想要 ogr_fdw 插件支持 Oracle 数据库,则需要手动配置编译环境:
安装下列软件包:
下载 SDK 软件包 ,并将其解压到 /usr/lib/oracle/21/client64
目录下。此时该目录下有如下内容:
bin lib sdk SDK_LICENSE SDK_README
导出 export ORACLE_HOME=/usr/lib/oracle/21/client64
环境变量
然后再次 configure gdal 库就可以看到 OCI 支持。
OCI support: yes
使用
使用 create extension ogr_fdw
创建扩展
Shapefile 文件
创建 server
CREATE SERVER shpdriver
FOREIGN DATA WRAPPER ogr_fdw
OPTIONS (
datasource '/home/pg13/data/shp',
format 'ESRI Shapefile'
);
其中 datasource 为 Shapefile 文件所在路径。format 为格式。
创建外部表
create foreign table shptable(
geom geometry
)
server shpdriver
options (layer 'bjroad');
其中 server 指定为我们上边创建的 server 名字,option 中添加了一个必须的 layer 选项,指定我们要连接到的图层。
查询数据
select count(*) from shptable;
select * from shptable;
FileGDB 文件
创建 server
CREATE SERVER filegdbserver
FOREIGN DATA WRAPPER ogr_fdw
OPTIONS (
datasource '/home/pg13/data/bjroad.gdb.zip',
format 'OpenFileGDB' );
这里我们在 options 中指定数据格式为 OpenFileGDB
创建外部表
create foreign table filegdbtable(
geom geometry(MULTILINESTRING, 4490)
)
server filegdbserver
options (layer 'bjroad_1');
指定要链接的图层为 bjroad_1
查询数据
select st_astext(geom)
from filegdbtable;
Oracle Spatial 数据库
创建 server
CREATE SERVER ocidriver
FOREIGN DATA WRAPPER ogr_fdw
OPTIONS (
datasource 'OCI:supermap/supermap@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.13.179)(PORT=1521))(CONNECT_DATA=(SID=helowin)))',
format 'OCI');
这里 datasource 中,我们指定的 Oracle Spatial 数据库地址,用户名,密码及 SID。格式为 OCI.
创建外部表
create foreign table ocitable(
geom geometry
)
server ocidriver
options (
layer 'BJROAD');
这里我们使用刚才导入的 bjroad.shp 数据,指定要链接的图层为 BJROAD.
查询数据
select count(*) from ocitable;
导入所有图层
如果想导入某个 schema 下的所有图层,可以使用 import schema 方法。如果想导入所有 schema 请使用 ogr_all:
create schema shpschema;
import foreign schema ogr_all
from server shpdriver into shpschema;
create schema filegdbschema;
import foreign schema bjroad
from server filegdbserver into filegdbschema;
create schema ocishcema;
import foreign schema ogr_all
from server ocidriver into ocishcema;
如果在表名或者列名中含有中文字符,请使用如下选项来禁用过滤:
IMPORT FOREIGN SCHEMA ogr_all
FROM SERVER fgdbtest
INTO fgdbpreserve
OPTIONS (
launder_table_names 'false',
launder_column_names 'false'
);