达梦数据库空间数据导入导出

达梦数据库空间数据导入导出和简单使用方法


dmst2shp和dmshp2st是达梦数据库专为空间类型数据设计的一种数据导入导出工具。工具在数据库安装目录的bin目录下,导入工具为dmshp2st,能够将空间数据从shapefile文件中转成dmfldr能够识别的中间文件,并通过dmfldr将数据导入到达梦服务器中。导出工具为dmst2shp,能够将空间数据从达梦服务器直接导出到shapefile文件中。空间数据导入导出数据~流程图如下:

这个是过程
使用dmshp2st导入数据

使用dmshp2st工具需指定必要的参数, 调用格式如下:

dmshp2st keyword=value [keyword=value ...]

样例如下:

dmshp2st shapefile=d:\test table_name=t1 auto_overwrite=1

dmshp2st先将shapefile中的数据导入到中间文件*.dat等文件中,再将*.dat等文件导入到服务器中,中间文件可以被多次使用,或者导入到多个不同服务器中,还可以通过修改*.ctl内容筛选出需要导入的数据。
可以用help参数来显示dmshp2st各个参数的使用说明

格式: ./dmshp2st  KEYWORD=value

例程: ./dmshp2st  SHAPEFILE=/shapename

关键字              说明(默认值)
---------------------------------------------------------------------------------------
SHAPEFILE           导入shapefile的文件路径,包含三个同名文件(*.shp、*.shx、*.dbf)
TABLE_NAME          导入到指定的表中,默认与文件名同名
GEO_COLUMN          空间列名,默认为GEOM
ID_COLUMN           为表添加ID列名
START_ROW           从第几行开始导入,默认为1
SRID                空间参考坐标系,默认为0
BOX                 边界矩形,在该矩形内的空间对象才允许被导入表中,
                   格式: BOX=(MINX,MINY,MAXX,MAXY),X、Y为矩形坐标,默认不过滤任何对象
LOG                 生成的日志文件名
AUTO_OVERWRITE      是否覆盖所有同名文件(0) 0:否 1:是
SIMPLE              是否生成简单类型(0) 0:否 1:是
HELP                打印帮助信息

dmshp2st工具各个参数详细说明:

1、shapefile

 空间数据的完整描述需要至少3个同名但不同后缀的文件(*.shp,*.shx,*.dbf),此参数指定上述3个文件的文件路径,无需附带后缀。程序从*.shp和*.shx中构造具体的空间对象数据,从*.dbf中构造表中非空间类型列的列数据。此选项为必选项。

2、table_name

 指定数据将导入到哪张表,此参数为可选项,若未指定表名,则默认表名为shapefile文件名,程序会自动为表名添加双引号,表名长不得超过128个字节。

3、geo_column

 指定空间数据列列名,此参数为可选项,若不指定列名,则空间列名默认设置为“geom”,至多允许指定一列空间列名,列名不得超过128字节。

4、id_column

 为导入表添加id列,每条记录都有唯一的id号,此参数为可选项,默认不添加id列,id号从start_row开始,若导入过程中有数据被跳过,则相应的id号也会跳过。

5、start_row

 指定从第几行开始导入数据,此参数为可选项。若不指定参数值,则默认值为1,若大1,则程序将跳过*.shp,*dbf部分数据,从指定行开始导入,start_row最大值不得超过2147483647。

6、srid

 指定导入数据的空间参考坐标系,此参数为可选项,默认值为0。

7、box

 指定一个边界矩形,与边界矩形不相交的空间对象将不会被导入。四个参数值为double类型,允许使用科学计数法表示。此参数为可选项,若未指定该参数,则默认不过滤任何空间对象。

8、log

 指定日志文件路径,此参数为可选项,若未指定该参数,则默认不生成日志文件。日志文件记录了整个导入过程的细节。

9、auto_overwrite

 是否允许覆盖同名文件,该参数为可选项。参数值可设为0或1,0表示不允许覆盖,1允许覆盖,默认为0。dmshp2st工具将自动生成中间文件(*.sql,*.dat,*.lob,*.ctl,*.log),若上述文件已存在,则需要此参数来确定是否需要覆盖同名文件。

10、simple

 是否生成简单几何体,该参数为可选项。参数值可设为0或1,1表示简单几何体,0表示复合几何体,默认为0。shapefile文件空间类型与达梦服务器空间类型有所不同,shapefile中polyline及polygon类型对应着达梦的linestring,polygon和MultiLinestring,MultiPolygon,因此需要此参数来确定导入成何种类型。

11、help

 打印帮助信息。

关键字 说明(默认值)

使用dmst2shp工具需指定必要的参数,调用格式为:
dmst2shp userid keyword=value [keyword=value ...]
 
实例如下:
 
dmshp2st SYSDBA/SYSDBA@192.168.0.1:5236 shapefile=d:\test sql="select * from t1" auto_overwrite=1
可以用help参数来显示dmst2shp各个参数的使用说明:
格式: dmst2shp.exe  KEYWORD=value
例程: dmst2shp.exe  SYSDBA/SYSDBA SQL="SELECT ID,LOCATION FROM T_GEO;" SHAPEFILE=c:\shapename

USERID 必须是命令行中的第一个参数

关键字说明(默认)

----------------------------------------------------------------------

USERID             用户名/口令 格式:USER/PWD@SERVER:PORT#SSLPATH@SSLPWD

SQL                生成shapefile的查询语句

SHAPEFILE         生成shapefile的文件路径,包含三个同名文件(*.shp、*.shx、*.dbf)

LOG                 生成的日志文件名

AUTO_OVERWRITE    是否覆盖所有同名文件(0) 0:否 1:是

SIMPLE              是否生成简单类型(0) 0:否 1:是

HELP                打印帮助信息

dmshp2st工具各个参数详细说明:

1、userid

          指定数据库的登录信息,包含用户名、密码、服务器地址、端口等信息,登录链接格式为:USER/PWD@SERVER:PORT#SSLPATH@SSLPWD,此参数为必选项且必须位于参数位置的第一个,关键字userid可以省略不写。

2、sql

          指定查询语句,此参数为必选项。查询语句放在双引号内,它的结果将决定哪些数据将被导出到shapefile文件,查询结果必须包含一列空间列与至少一列普通列。

3、shapefile

          指定导出文件的路径,此参数为必选项。dmst2shp将生成3个同名但不同后缀的文件(*.shp,*.shx,*.dbf),*.shp保存具体的空间数据,*.shx保存空间数据在*.shp里的偏移信息,*.dbf保存普通列数据,此参数无需指定后缀名。

4、log

          指定导出过程产生的日志文件路径,此参数为可选项。日志文件记录了导出过程中的导出信息和错误信息以及统计信息。若未指定该参数,则默认不生成日志文件。

5、auto_overwrite

          是否自动覆盖同名文件,此参数为可选项,参数值只能为0或1,0表示不覆盖同名文件,1表示覆盖,默认值为0。

6、simple

          是否导出成简单几何体,此参数为可选项。参数值只能为0或1,0表示不生成简单几何体,1表示生成简单几何体,默认值为0。此参数针对达梦数据库中以Multi打头的空间类型数据。若指定simple为1,对于MultiPoint,则只会导出第一个点,其余点将被忽略;对于MultiLinestring和MultiPolygon,若其内部包含2个及以上简单几何体,则无法导出成简单几何体。

7、help

       获取dmst2shp工具帮助信息。
示例
1、数据准备:

drop table t1 cascade;

create table t1(c1 int,c2 st_geometry);

insert into t1 values(1, dmgeo.st_geomfromtext('linestring(10 10, 10 20)',0));

insert into t1 values(2, dmgeo.st_geomfromtext('linestring (5 4, 5 5)',0));

commit;

2、数据导出

dmst2shp.exe SYSDBA/SYSDBA@192.168.0.1:5236 SQL="SELECT * FROM t1" SHAPEFILE=D:\test AUTO_OVERWRITE=1

导出程序将生成3个同名文件:test.shp、test.shx、test.dbf。

3、数据导入

dmshp2st.exe shapefile=d:\test table_name=t1 AUTO_OVERWRITE=1 ID_COLUMN=GID SRID=0 START_ROW=1

  导入程序将生成4个同名文件:test.sql、test.ctl、test.dat、test.lob。再利用dmfldr工具将数据导入到达梦服务器中,因为空间类型是类类型,因此使用dmfldr时需要置enable_class_type标记为true,dmfldr具体使用方法请参照“快速数据加载”章节。

dmfldr.exe SYSDBA/SYSDBA@192.168.0.1:5236 CONTROL='D:\test.ctl' lob_directory='d:\' enable_class_type=true mode='in'

下面是简单sql使用语法

用户在使用DMGEO包之前,需要提前调用系统过程SP_INIT_GEO_SYS(1)创建DMGEO包。
drop table if exists test;
创建一个表,字段为空间数据类型(点)
create table test(a SYSGEO.ST_POINT);
向表中插入5条点空间数据
insert into test values(dmgeo.ST_PointFromText('point (110 50)' , 0));

insert into test values(dmgeo.ST_PointFromText('point (120 40)' , 0));

insert into test values(dmgeo.ST_PointFromText('point (115 45)' , 0));

insert into test values(dmgeo.ST_PointFromText('point (30 40)' , 0));

insert into test values(dmgeo.ST_PointFromText('point (200 40)' , 0));

commit; 

select * from test;
查询test表中与面相交的点
select * from test where dmgeo.ST_INTERSECTS(a,
dmgeo.st_geomfromtext('polygon ((110 40, 110 50, 120 50, 120 40,110 40))', 0));
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值