一、确认环境
1、确保达梦数据库已经安装并运行。
2、使用SP_INIT_GEO_SYS(1);启用空间数据工具包GEOGRAPHY SYSTEM。
使用SELECT SF_CHECK_GEO_SYS;检查包状态:0:未启用;1:已启用;
3、确认dmshp2st和dmfldr工具已经包含在达梦数据库的安装包中,通常这些工具位于数据库的bin目录下,如:C:\dmdbms\bin。
4、确保shp文件是完整的,包括主文件(.shp)、索引文件(.shx)和dBase表(.dbf)。
5、确保shp文件的数据格式与达梦数据库的要求相匹配,特别是空间参考坐标系(SRID)等参数。
二、使用dmshp2st工具转换shp数据
1、在cmd的C:\dmdbms\bin目录下运行dmshp2st命令
dmshp2st shapefile=D:\path\to\your\shapefile table_name=your_table_name srid=4326 auto_overwrite=1
- shapefile:指定shp文件的路径(无需指定后缀,程序会自动寻找.shp、.shx和.dbf文件)
- table_name:数据库表名
- srid:空间参考坐标系
- auto_overwrite:参数设置为1以允许覆盖同名文
2、执行命令后,dmshp2st会在你设置的shapefile目录下生成四个同名但不同后缀的文件:.sql、.ctl、.dat、.lob。
三、使用dmfldr工具导入数据
1、执行.sql文件新建该表
2、在cmd的C:\dmdbms\bin目录下运行dmfldr命令
dmfldr userid=SYSDBA/SYSDBA@IP:PORT control='path_to_ctl_file/control_file.ctl' CLIENT_LOB=true lob_directory='path_to_lob_files' enable_class_type=true CHARACTER_CODE='utf-8'
- SYSDBA/SYSDBA@IP:PORT :数据库的用户名、密码和连接信息,达梦默认端口5236
- control:指定.ctl文件的路径,需带引号
- CLIENT_LOB:大字段目录是否在本地
- lob_directory:大字段数据文件临时存放目录
- enable_class_type:设置为true以支持空间类型数据的导入
- CHARACTER_CODE:设置字符编码(如utf-8)
四、注意事项
1、所有路径均不能存在特殊字符及中文,否则ctl的内容会出现乱码
2、可能需要手动修改ctl和sql文件添加模式名,如果修改,三处均需修改
ctl:
LOAD
INFILE 'C:\Users\admin\temp_workspace\test_data.dat' STR X '0D0A'
APPEND
// MYDB默认不存在
INTO TABLE "MYDB"."TEST_DATA"
FIELDS TERMINATED BY '|'
(
"TYPE",
"NAME",
"Shape_Leng",
"Shape_Area",
"GEOM"
)
sql:
// MYDB默认不存在
DROP TABLE "MYDB"."TEST_DATA" CASCADE PURGE;
CREATE TABLE "MYDB"."TEST_DATA"(
"TYPE" VARCHAR(6),
"NAME" VARCHAR(60),
"Shape_Leng" VARCHAR(255),
"Shape_Area" VARCHAR(255),
"GEOM" SYSGEO.ST_MULTIPOLYGON check (srid = 4326));
COMMIT;
3、表名、字段名均有对应关系,不要在dmshp2st命令的成果文件中修改相关内容
4、dmshp2st命令中的文件路径shapefile的值不需要带单引号,但dmfldr命令中涉及的路径均需带单引号