【第五章 空间数据库】dmshp2st实现shp数据入库

3

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-1-5 10:46:07 | 显示全部楼层
通过dmshp2st和dmfldr工具进行入库,有点类似于Oracle提供的shp2sdo进行入库一样。
dmshp2st导入程序将生成4个同名文件:*.sql、*.ctl、*.dat、*.lob。
因默认srid为0,所以需设置srid编码
dmshp2st shapefile=F:\data\test  srid=4326 auto_overwrite=1 table_name=test_table

若报错shp与shx文件不匹配,则需要对shp数据进行几何校正。
执行成功后,执行.sql文件中的建表语句,生成表。
再利用dmfldr工具将数据导入到达梦服务器中,因为空间类型是类类型,因此使用dmfldr时需要置enable_class_type标记为true,涉及到中文字符编码的要设置CHARACTER_CODE参数。
dmfldr  SYSDBA/SYSDBA@IP:PORT  control='F:\data\test.ctl' CLIENT_LOB=true  lob_directory='F:\data'  enable_class_type=true mode='in' CHARACTER_CODE='utf-8'
关键字              说明(默认值)

USERID              用户名/口令, 格式:{[/] | /}[@][] []

  : [ | host[:port] | ]

  : #{=[,=]...}

--此行外层{}是为了封装参数之用,书写时需要保留

  : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}

CONTROL             控制文件,字符串类型

LOG                 日志文件,字符串类型 (fldr.log)

BADFILE             错误数据记录文件,字符串类型 (fldr.bad)

SKIP                初始忽略逻辑行数 (0)

LOAD                需要装载的行数 (ALL)

ROWS                提交频次 (50000), DIRECT为FALSE有效

DIRECT              是否使用快速方式装载 (TRUE)

SET_IDENTITY        是否插入自增列 (FALSE)

SORTED              数据是否已按照聚集索引排序 (FALSE)

INDEX_OPTION        索引选项 (1)

1 不刷新二级索引,数据按照索引先排序,装载完后再

将排序的数据插入索引

2 不刷新二级索引,数据装载完成后重建所有二级索引

3 刷新二级索引, 数据装载的同时将数据插入二级索引

ERRORS              允许的最大数据错误数 (100)

CHARACTER_CODE      字符编码,字符串类型 (GBK, UTF-8, SINGLE_BYTE, EUC-KR)

MODE                装载方式,字符串类型 IN表示载入,OUT表示载出,

OUTORA表示载出ORACLE (IN)

CLIENT_LOB          大字段目录是否在本地 (FALSE)

LOB_DIRECTORY       大字段数据文件存放目录

LOB_FILE_NAME       大字段数据文件名称,仅导出有效 (dmfldr.lob)

BUFFER_NODE_SIZE    读入文件缓冲区的大小 (10),有效值范围1~2048

LOG_SIZE            日志信息缓冲区的大小 (1),有效值范围1~100

READ_ROWS           工作线程一次最大处理的行数 (100000),最大支持2^26-10000

NULL_MODE           载入时NULL字符串是否处理为NULL

载出时空值是否处理为NULL字符串 (FALSE)

NULL_STR            载入时视为NULL值处理的字符串

SEND_NODE_NUMBER    运行时发送节点的个数 (20),有效值范围16~65535

TASK_THREAD_NUMBER  处理用户数据的线程数目,默认与处理器核数量相同,有效值范围1~128

BLDR_NUM            服务器BLDR数目 (64),有效值范围1~1024

BDTA_SIZE           bdta的大小 (5000),有效值范围100~10000

COMPRESS_FLAG       是否压缩bdta (FALSE)

MPP_CLIENT          MPP环境,是否本地分发 (TRUE)

SINGLE_FILE         MPP/DPC环境,是否只生成单个数据文件(FALSE)

LAN_MODE            MPP/DPC环境,是否以内网模式装载数据(FALSE)

UNREP_CHAR_MODE     非法字符处理选项(0),为0时表示跳过该数据行,为1时表示使用(*)替换错误字节

SILENT              是否静默方式装载数据(FALSE)

BLOB_TYPE           BLOB类型字段数据值的实际类型,字符串类型 (HEX_CHAR)

HEX表示值为十六进制,HEX_CHAR表示值为十六进制字符类型

仅在direct=FALSE有效

OCI_DIRECTORY       OCI动态库所在的目录

DATA                指定数据文件路径

ENABLE_CLASS_TYPE   允许用户导入CLASS类型数据 (FALSE)

FLUSH_FLAG          提交时是否立即刷盘 (FALSE)

IGNORE_BATCH_ERRORS 是否忽略错误数据继续导入 (FALSE)

SINGLE_HLDR_HP      是否使用单个HLDR装载HUGE水平分区表 (TRUE)

EP                  指定需要发送数据的站点序号列表,仅向MPP/DPC环境导入数据时有效

PARALLEL            是否开启并行装载(FALSE)

SQL                 使用自定义查询语句,仅导出模式有效

SQLFILE             自定义查询语句所在文件,仅导出模式有效

TABLE               导入/出表

ROW_SEPERATOR       行分隔符

FIELD_SEPERATOR     列分隔符

COMMIT_OPTION       提交选项(0), 0:每发送一批数据后提交, 1:发送完所有数据后提交

APPEND_OPTION       追加选项(0), 0: 追加方式, 1: 替代方式, 2: 插入方式

COLNAME_HEADING     是否在导出文件头中打印列名(FALSE)

IGNORE_AIMLESS_DATA 是否忽略无目标数据(FALSE)

LOB_AS_VARCHAR      是否将CLOB作为VARCHAR进行导入导出(FALSE)

LOB_AS_VARCHAR_SIZE 将CLOB作为VARCHAR进行导入导出时, lob数据最大大小(10)MB

LOG_LEVEL           记录错误数据信息级别(3), 0: 不记录 1: 只记录到log文件 2: 只记录到bad文件 3: 记录到log和bad文件

FLDR_INI            配置文件路径,字符串类型

RECONN              自动重连次数(0)

RECONN_TIME         自动重连等待时间(5), 单位(s), 有效值范围(1~10000)

WIDTH               设置列数据宽度

SEDF                被替换的字符列表

SEDT                用于替换的字符列表

ESCAPE              转义符

HELP                打印帮助信息
如下,则入库成功。

回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表