当前位置: 首页 > news >正文

达梦DMFLDR导出和导入的方法

达梦DMFLDR导出和导入的方法

  • 1 控制文件
  • 2 数据载出
  • 3 数据载入
  • 4 性能优化

dmfldr是一种快速装载工具。用户可以能够把按照一定格式排序的文本数据以简单、快速、高效的方式载入到DM数据库中,或把DM数据库中的数据按照一定格式载出到文本文件中。dmldrc(客户端)和dmldrp(服务端)功能与dmfldr相同,在资源不足的场景下使用。

可以使用如下命令查看帮助:

$ ./dmfldr help
version: 03134284336-20250117-257733-20132
格式: ./dmfldr   KEYWORD=value例程: ./dmfldr   SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl'USERID 必须是命令行中的第一个参数
字符串类型参数必须以引号封闭关键字              说明(默认值)
--------------------------------------------------------------------------------
USERID              用户名/口令格式: {<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]参数:<connect_identifier> ::= [<svc_name> | host[:port] | <unixsocket_file>]<option> ::= #{<extend_option>=<value>[,<extend_option>=<value>]...}<os_auth> ::= AS { SYSDBA | SYSSSO | SYSAUDITOR | USERS | AUTO }示例: SYSDBA/SYSDBA@192.168.1.64:5236注意: option参数的{}是为了封装参数之用,书写时需要保留
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    读入文件缓冲区的大小 (10MB),有效值范围1~2048
LOG_SIZE            日志信息缓冲区的大小 (1MB),有效值范围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数据最大大小(10MB)
LOG_LEVEL           记录错误数据信息级别(3), 0: 不记录 1: 只记录到log文件 2: 只记录到bad文件 3: 记录到log和bad文件 4: 错误仅输出到屏幕
FLDR_INI            配置文件路径,字符串类型
RECONN              自动重连次数(0)
RECONN_TIME         自动重连等待时间(5), 单位(s), 有效值范围(1~10000)
WIDTH               设置列数据宽度
SEDF                被替换的字符列表
SEDT                用于替换的字符列表
ESCAPE              转义符
EXPORT_MODE         MPP/DPC环境, 使用sql语句时的导出模式(0), 0: 普通模式 1: 快速模式, LOCAL方式连接
BAD_FILE_MODE       错误数据文件模式(0), 0: 普通模式 1: 纯数据模式
COMPATIBLE_MODE     兼容模式(0), 0: 不做兼容 1: 兼容DB2 2: 兼容MYSQL
PRIORITY_ENCLOSE    DB2模式下, enclose优先级最高
HELP                打印帮助信息

1 控制文件

此控制文件用于指定数据文件路径和数据文件中数据的格式。并非我们常说的数据库控制文件。具体语法详情,请查看《DM8快速装载工具使用手册》。

2 数据载出

例如1:载出u_test.t_objects对象的指定列数据,并以’|'作为分隔符。

$ vim t_objects.ctl
load data
infile '/backup/dmbackup/dmfldr/u_test_t_objects.txt'
into table u_test.t_objects
FIELDS '|'
(
OWNER,
OBJECT_NAME
)$ dmfldr SYSDBA/xxxxxxx:5432 CONTROL=\'/backup/dmbackup/dmfldr/t_objects.ctl\' MODE=\'OUT\'
dmfldr V8
141300 rows is load out
319552 rows is load out
export success.
319552 行数据已导出
用时: 170.407(ms)

例如2:导出含有LOB字段的表数据。

$ vim t_objects.ctl
load data
infile '/backup/dmbackup/dmfldr/u_test_t_objects.txt'
into table u_test.t_objects
FIELDS '|'
(
OWNER,
OBJECT_NAME,
B1,
C1
)

LOB_FILE_NAME指定生成的lob文件名称,保存在相同路径下。

$ dmfldr SYSDBA/xxxxxxx:5432 CONTROL=\'/backup/dmbackup/dmfldr/t_objects.ctl\' MODE=\'OUT\' LOB_FILE_NAME=\'u_test_t_objects.lob\'
dmfldr V8
120804 rows is load out
240134 rows is load out
319552 rows is load out
export success.
319552 行数据已导出
用时: 658.765(ms)

例3:导出指定条件的数据和指定列。

$ dmfldr SYSDBA/xxxxxxx:5432 MODE=\'OUT\' SQL="select owner,object_name from U_TEST.T_OBJECTS where owner='PUBLIC';" DATA=\'/backup/dmbackup/dmfldr/u_test_t_objects.txt\'
dmfldr V8
35879 rows is load out
48832 rows is load out
export success.
48832 行数据已导出
用时: 89.126(ms)

3 数据载入

例1:数据导入指定表。表请提前创建。

$ vim t_objects.ctl
load data
infile '/backup/dmbackup/dmfldr/u_test_t_objects.txt'
into table u_test.t_objects7
FIELDS '|'
(
OWNER,
OBJECT_NAME
)$ dmfldr SYSDBA/xxxxxxx:5432 CONTROL=\'/backup/dmbackup/dmfldr/t_objects.ctl\' MODE=\'IN\'
dmfldr V8
控制文件:
加载行数: 全部
...行缓冲区数量: 4
任务线程数量: 448832 行记录已提交目标表: U_TEST.T_OBJECTS7
load success.
48832 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数: 0
读取的逻辑记录总数: 48832
拒绝的逻辑记录总数: 026.535(ms)已使用

例2:导入满足指定条件的数据。

$ vim t_objects.ctl
load data
infile '/backup/dmbackup/dmfldr/u_test_t_objects.txt'
into table u_test.t_objects7
when OBJECT_NAME = 'DBA_DBFS_HS'
FIELDS '|'
(
OWNER,
OBJECT_NAME
)$ dmfldr SYSDBA/xxxxxxx:5432 CONTROL=\'/backup/dmbackup/dmfldr/t_objects.ctl\' MODE=\'IN\'
dmfldr V8
控制文件:
加载行数: 全部
...
目标表: U_TEST.T_OBJECTS7
load success.
32 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数: 0
读取的逻辑记录总数: 48832
拒绝的逻辑记录总数: 014.600(ms)已使用

例3:多表装载。第2个及以后的INTO TABLE,列必须有position参数,position必须是有明确才能正常装载。

$ vim test.ctl
LOAD DATA
INFILE '/backup/dmbackup/dmfldr/test.txt'
INTO TABLE u_test.test1
WHEN C1 != '1'
FIELDS ','
(
c1,
c2
)
INTO TABLE u_test.test2
WHEN (3:3) = '2' AND c1 != '3'
FIELDS ','
(
c1 position (1:1),
c2 position (3:3)
)$ dmfldr SYSDBA/xxxxxxx:5432 CONTROL=\'/backup/dmbackup/dmfldr/test.ctl\' MODE=\'IN\'
dmfldr V8
控制文件:加载行数: 全部
...
目标表: U_TEST.TEST1
load success.
4 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数: 0
读取的逻辑记录总数: 5
拒绝的逻辑记录总数: 02.391(ms)已使用目标表: U_TEST.TEST2
load success.
1 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数: 0
读取的逻辑记录总数: 5
拒绝的逻辑记录总数: 02.391(ms)已使用

4 性能优化

BUFFER_NODE_SIZE:读入文件缓冲区的大小 (10MB),有效值范围1~2048。值越大,缓冲区的页越大,每次读取的数据就越多,每次发送到服务器的数据也就越多,效率越高。
READ_ROWS:工作线程一次最大处理的行数 (100000),最大支持2^26-10000
SEND_NODE_NUMBER 运行时发送节点的个数 (20),有效值范围16~65535若在数据载入时发现发送节点不够用,系统会动态增加分配。在系统内存足够的情况下,可以适当设大 SEND_NODE_NUMBER 值,提升 dmfldr 载入性能。
TASK_THREAD_NUMBER:处理用户数据的线程数目,默认与处理器核数量相同,有效值范围1~128。默认情况下,dmfldr 将该参数值设为系统 CPU 的个数,但当 CPU 个数大于 8 时,缺省值都被置为 8。
BLDR_NUM:水平分区表装载时,指定服务器BLDR的最大个数,缺省为64。有效值范围1~1024。
BDTA_SIZE:bdta的大小 (5000),有效值范围100~10000。BDTA代表DM数据库批量数据处理机制中一个批量,在内存、CPU允许的条件下,增大BDTA_SIZE能加快装载速度
INDEX_OPTION:索引选项 (1)。3代表服务器使用追加模式来进行二级索引的插入,在数据装载的过程中,同时进行二级索引的插入 ,若未禁用全局索引 ,则在非DPC环境下 ,全局索引可通过设置INDEX_OPTION为3进行插入。

达梦在线服务平台 https://eco.dameng.com

http://www.dtcms.com/a/321478.html

相关文章:

  • 以任务为中心的智能推荐系统架构设计:原理、实现与挑战分析
  • 深入理解Java集合框架:核心接口、实现类与实战选择
  • Vue2中,Promise.all()调用多个接口的用法
  • Numpy科学计算与数据分析:Numpy文件操作入门之数组数据的读取和保存
  • 智慧社区(十)——声明式日志记录与小区地图功能实现
  • 解决MinIO上传图片后返回URL无法访问的问题
  • Linux 启动流程实战:Device Tree 全解析与驱动绑定机制
  • 【LLM实战】RAG高级
  • 从0到1开发剧本杀小程序:全流程指南与避坑指南
  • 使用 C# 通过 .NET 框架开发应用程序的安装与环境配置
  • 网吧在线选座系统|基于java和小程序的网吧在线选座小程序系统设计与实现(源码+数据库+文档)
  • [202403-E]春日
  • 小程序难调的组件
  • 悬赏任务系统网站兼职赚钱小程序搭建地推抖音视频任务拉新源码功能详解二开
  • LangChain学习笔记05——多模态开发与工具使用
  • react+echarts实现变化趋势缩略图
  • LabVIEW数字抽取滤波
  • 点播服务器
  • RabbitMQ 中无法路由的消息会去到哪里?
  • Spring AMQP 入门与实践:整合 RabbitMQ 构建可靠消息系统
  • Android12 Framework Sim卡pin与puk码解锁
  • 用LaTeX优化FPGA开发:结合符号计算与Vivado工具链(二)
  • Nature论文-预测和捕捉人类认知的基础模型-用大模型模拟人类认知
  • 麦芽:寻常食材的中医智慧 多炮制方式各显养生价值
  • 动态规划进阶:转移方程优化技巧全解
  • 安卓应用内WebView页面调试技巧
  • WPF 双击行为实现详解:DoubleClickBehavior 源码分析与实战指南
  • 政治社会时间线
  • Java 之 多态
  • UE5太空射击游戏入门(一):项目创建与飞船控制