dmfldr实战
dmfldr实战
本文使用达梦的快速装载工具,对测试表进行数据导入导出。
新建测试表
create table “BENCHMARK”.“TEST_FLDR”
(
“uid” INTEGER identity(1, 1) not null ,
“name” VARCHAR(24),
“begin_date” TIMESTAMP(0),
“amount” DECIMAL(6, 2),
primary key(“uid”)
)
storage(initial 1, next 1, minextents 1, fillfactor 0)
;
造数据(1w条)






dmfldr参数介绍
例: ./dmfldr SYSDBA/SYSDBA CONTROL=‘/opt/data/fldr.ctl’
USERID 必须是命令行中的第一个参数
字符串类型参数必须以引号封闭
关键字 说明(默认值)
USERID 用户名/口令, 格式:{[/] | /}[@<connect_identifier>][] [<os_auth>]
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
: #{<exetend_option>=[,<extend_option>=]…}
–此行外层{}是为了封装参数之用,书写时需要保留
<os_auth> : 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文件 4: 错误仅输出到屏幕
FLDR_INI 配置文件路径,字符串类型
RECONN 自动重连次数(0)
RECONN_TIME 自动重连等待时间(5), 单位(s), 有效值范围(1~10000)
WIDTH 设置列数据宽度
SEDF 被替换的字符列表
SEDT 用于替换的字符列表
ESCAPE 转义符
DB2_MODE 兼容DB2模式
PRIORITY_ENCLOSE DB2模式下, enclose优先级最高
HELP 打印帮助信息
使用 dmfldr 导出数据
编辑控制文件
vi test.ctl
LOAD DATA
INFILE ‘/home/dmdba/data/test.txt’
INTO TABLE TEST_FLDR
FIELDS ‘|’
(
“uid”,
“name”,
“begin_date”,
“amount”
)
执行导出命令
工具在安装目录/bin/目录下。
cd /home/dmdba/dmdbms/bin
./dmfldr userid=BENCHMARK/123456789@localhost:5236 control=‘/home/dmdba/test.ctl’ mode=‘out’

确认数据

注意:如果重复执行导出语句,导出的数据会追加到输出文件而不是覆盖清空。这是因为关于 APPEND|REPLACE|INSERT 选项,当 dmfldr 处于导出数据模式时,dmfldr 会检查导出数据文件是否存在,若不存在则直接创建新文件;若存在,当设置为 APPEND 时,以追加的方式写入数据;设置为 REPLACE 时,先删除文件再重新创建新文件;设置为其他值时则报错。选项默认值为 APPEND;
测试APPEND|REPLACE
再次执行导出语句

指定REPLACE选项

这样再次执行导出命令,就会先删文件再新建文件导入数据

使用 dmfldr 导入数据
创建一个空表用于快速载入
复制上面图片的建表语句,表名改为TEST_FLDR_02
CREATE TABLE “BENCHMARK”.“TEST_FLDR_02”
(
“uid” INTEGER IDENTITY(1, 1) NOT NULL,
“name” VARCHAR(24),
“begin_date” TIMESTAMP(0),
“amount” DECIMAL(6,2),
CLUSTER PRIMARY KEY(“uid”)) STORAGE(ON “MAIN”, CLUSTERBTR) ;

编辑控制文件
读取刚导出的数据文件/home/dmdba/data/test.txt,选择REPLACE选项
LOAD DATA
INFILE ‘/home/dmdba/data/test.txt’
REPLACE
INTO TABLE TEST_FLDR_02
FIELDS ‘|’
(
“uid”,
“name”,
“begin_date”,
“amount”
)
注意:当 dmfldr 处于数据装载模式时,INSERT 表示插入方式,向空表插入新记录(如果不是空表则会报错无效的装载模式);APPEND 表示追加方式,为缺省方式,在表中追加新记录;REPLACE 表示替代方式,先清空表再插入新记录。
其中,字段信息可以通过管理工具查看属性获取

执行导入命令
./dmfldr userid=BENCHMARK/123456789@localhost:5236 control=‘/home/dmdba/test.ctl’

确认数据

dmfldr 使用限制
dmfldr 的使用存在以下一些限制:
• 不支持向临时表、外部表装载数据
• 不支持向系统表装载数据
• 不支持向带有位图索引的表装载数据
• 不支持向带有全文索引的表装载数据
• 不支持向 DCP 代理装载数据
• 不支持在 DPC 环境下,向带有全局索引的表装载数据
• 仅支持在 index_option=2 的情况下向带有函数索引的表装载数据
• dmfldr 装载时会对约束进行检查,对各种约束的处理机制如下表所示;由于 dmfldr 不处理约束的有效性,都视为有效,故需要用户自行处理约束有效性等相关内容
约束 数据不满足时 数据插入与否 约束是否有效
非空约束(NOT NULL) 报错 不插入 有效
聚集索引(CLUSTER PRIMARY KEY) 报错 不插入 有效
唯一约束(UNIQUE, PRIMARY KEY) 不报错 插入 有效
引用约束(FOREIGN KEY) 不报错 插入 有效
CHECK 约束(CHECK) 不报错 插入 有效
注:当数据不满足唯一约束时,唯一约束仍有效,但相关联的唯一索引将会失效。
READ_ROWS参数测试
本轮测试新增参数介绍:
ROWS 提交频次 (50000)
READ_ROWS 工作线程一次最大处理的行数 (100000)
导出数据
有测试数据1百万条

新建空表
create table “BENCHMARK”.“TEST_FLDR_TMP”
(
“uid” INTEGER identity(1, 1) not null ,
“name” VARCHAR(24),
“begin_date” TIMESTAMP(0),
“amount” DECIMAL(6, 2),
primary key(“uid”)
)
storage(initial 1, next 1, minextents 1, fillfactor 0)
;
编辑控制文件
OPTIONS
(
READ_ROWS=100000
ROWS = 50000
)
LOAD DATA
INFILE ‘/home/dmdba/data/test.txt’
REPLACE
INTO TABLE TEST_FLDR_TMP
FIELDS ‘|’
(
“uid”,
“name”,
“begin_date”,
“amount”
)
READ_ROWS=100000 (每次读取的最大行数,100000 )
ROWS=50000 ( 每次提交行数, 50000 )
执行导入
dmfldr userid=BENCHMARK/123456789@localhost:5236 control=‘/home/dmdba/data/test_in.ctl’

耗时7.75秒
清空测试导入表

修改控制文件内参数
OPTIONS
(
READ_ROWS=200000
ROWS = 50000
)
LOAD DATA
INFILE ‘/home/dmdba/data/test.txt’
REPLACE
INTO TABLE TEST_FLDR
FIELDS ‘|’
(
“uid”,
“name”,
“begin_date”,
“amount”
)
修改:
READ_ROWS=200000 (每次读取的最大行数,20万 )
执行导入

耗时5.30秒
结果
READ_ROWS参数值为100000时,耗时7.75秒;
READ_ROWS参数值为200000时,耗时5.30秒。
测试表明:在合理范围内,通过调整READ_ROWS参数,将一次性读取行数增多,可以提高装载速度。
更多详细资料可前往达梦社区:https://eco.dameng.com
相关文章:
dmfldr实战
dmfldr实战 本文使用达梦的快速装载工具,对测试表进行数据导入导出。 新建测试表 create table “BENCHMARK”.“TEST_FLDR” ( “uid” INTEGER identity(1, 1) not null , “name” VARCHAR(24), “begin_date” TIMESTAMP(0), “amount” DECIMAL(6, 2), prim…...
谷歌收购HTC Vive部分软件团队:为VR/AR生态注入新活力
虚拟现实(VR)和增强现实(AR)技术的快速发展,正在重新定义我们与数字世界互动的方式。然而,尽管这些技术具有巨大的潜力,初创公司进入平台层面的竞争却异常艰难。Meta凭借其既有实力和先发优势占据了市场的主导地位,而苹果则似乎更倾向于专注于AR领域的发展。在这种背景…...
Spring AOP 入门教程:基础概念与实现
目录 第一章:AOP概念的引入 第二章:AOP相关的概念 1. AOP概述 2. AOP的优势 3. AOP的底层原理 第三章:Spring的AOP技术 - 配置文件方式 1. AOP相关的术语 2. AOP配置文件方式入门 3. 切入点的表达式 4. AOP的通知类型 第四章&#x…...
ElasticSearch view
基础知识类 elasticsearch和数据库之间区别? elasticsearch:面向文档,数据以文档的形式存储,即JSON格式的对象。更强调数据的搜索、索引和分析。 数据库:更侧重于事务处理、数据的严格结构化和完整性,适用于…...
一文读懂Python之random模块(31)
random模块是Python的内置标准库,用于生成各类随机数,可以用作生成网站初始登录密码和随机验证码。 一、random模块简介 random模块可以生成随机数,包括随机整数、浮点数、随机元素等。 二、random模块相关概念 随机数: 是指在…...
12.udp
12.udp **1. UDP特性****2. UDP编程框架(C/S模式)****3. UDP发送接收函数****4. UDP编程练习** 1. UDP特性 连接特性:无链接,通信前无需像TCP那样建立连接。可靠性:不可靠,不保证数据按序到达、不保证数据…...
Upscayl-官方开源免费图像AI增强软件
upscayl 链接:https://pan.xunlei.com/s/VOI0Szqe0fCwSSUSS8zRqKf7A1?pwdhefi#...
【Super Tilemap Editor使用详解】(十七):常见问题解答(FAQ)
1.问题:我更新了 Unity 版本后,资源无法正常工作或代码出现错误。 解答:当你使用不同版本的 Unity 打开项目时,应该删除项目根目录下的 Library 文件夹。此外,如果遇到窗口问题,可以将窗口布局重置为默认布局。 2.问题:我在 SceneView 中看不到工具栏,也无法在图块地图…...
SpringBoot Web开发(SpringMVC)
SpringBoot Web开发(SpringMVC) MVC 核心组件和调用流程 Spring MVC与许多其他Web框架一样,是围绕前端控制器模式设计的,其中中央 Servlet DispatcherServlet 做整体请求处理调度! . 除了DispatcherServletSpringMVC还会提供其他…...
苍穹外卖第一天
角色分工 技术选型 pojo子模块 nginx反向代理 MD5密码加密...
C# Winform enter键怎么去关联button
1.关联按钮上的Key事件按钮上的keypress,keydown,keyup事件随便一个即可private void textBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode Keys.Enter){this.textBox2.Focus();}}2.窗体上的事件private void textBox2_KeyPress(object sen…...
LeGO LOAM坐标系问题的自我思考
LeGO LOAM坐标系问题的自我思考 IMU坐标系LeGO LOAM代码分析代码 对于IMU输出测量值的integration积分过程欧拉角的旋转矩阵VeloToStartIMU()函数TransformToStartIMU(PointType *p) IMU坐标系 在LeGO LOAM中IMU坐标系的形式采用前(x)-左(y)-上(z)的形式,IMU坐标系…...
vim交换文件的作用
1.数据恢复:因为vim异常的退出,使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑:vim检测到交换文件的存在,会给出提示,以避免一个文件同时被多人编辑。 (vim交换文件的工作原理:vim交换文件的工作…...
PHP实现混合加密方式,提高加密的安全性(代码解密)
代码1: <?php // 需要加密的内容 $plaintext 授权服务器拒绝连接;// 1. AES加密部分 $aesKey openssl_random_pseudo_bytes(32); // 生成256位AES密钥 $iv openssl_random_pseudo_bytes(16); // 生成128位IV// AES加密(CBC模式)…...
五. Redis 配置内容(详细配置说明)
五. Redis 配置内容(详细配置说明) 文章目录 五. Redis 配置内容(详细配置说明)1. Units 单位配置2. INCLUDES (包含)配置3. NETWORK (网络)配置3.1 bind(配置访问内容)3.2 protected-mode (保护模式)3.3 port(端口)配置3.4 timeout(客户端超时时间)配置3.5 tcp-keepalive()配置…...
安卓通过网络获取位置的方法
一 方法介绍 1. 基本权限设置 首先需要在 AndroidManifest.xml 中添加必要权限: xml <uses-permission android:name"android.permission.INTERNET" /> <uses-permission android:name"android.permission.ACCESS_NETWORK_STATE" /&g…...
python leetcode 笔记
只为记录一些python相关的特殊写法 无穷大,无穷小,NAN float(inf), float(-inf), float(nan) 判断字符的类型 isdigit(x) isspace(x) 字符串拼接 /.join([a,b,c]) # a/b/c 格式转换,字符转整形 ord(a) # 97 chr(97) # a 进制转…...
使用HttpClient和HttpRequest发送HTTP请求
项目中经常会用到向第三方系统发送请求来传递数据或者获得信息,一般用的比较多的为HttpClient 和 HttpRequest,这里简要总结一下 HttpClient 和 HttpRequest 的用法 一、HttpClient 1. 发送get请求 public static String get(String url, Map<Stri…...
(9) 上:学习与验证 linux 里的 epoll 对象里的 EPOLLIN、 EPOLLHUP 与 EPOLLRDHUP 的不同
(1)经过之前的学习。俺认为结论是这样的,因为三次握手到四次挥手,到 RST 报文,都是 tcp 连接上收到了报文,这都属于读事件。所以: EPOLLIN : 包含了读事件, FIN 报文的正常四次挥手、…...
C#属性和字段(访问修饰符)
不同点逻辑性/灵活性存储性访问性使用范围安全性属性(Property)源于字段,对字段的扩展,逻辑字段并不占用实际的内存可以被其他类访问对接收的数据范围做限定,外部使用增加了数据的安全性字段(Field)不经过逻辑处理占用内存的空间及位置大部分字段不能直接被访问内存使用不安全 …...
【C语言指针】指针和函数
文章目录 一、前言二、指针函数2.1 概念2.2 定义2.3 具体例子 三、函数指针3.1 概念3.2 定义3.3 具体例子3.4 回调函数3.4.1 概念3.4.2 例子13.4.3 例子2 四、函数指针数组4.1 概念4.2 定义4.3 具体例子 五、函数指针数组的指针5.1 概念5.2 定义5.3 具体例子 一、前言 关于指针…...
因果推断与机器学习—用机器学习解决因果推断问题
Judea Pearl 将当前备受瞩目的机器学习研究戏谑地称为“仅限于曲线拟合”,然而,曲线拟合的实现绝非易事。机器学习模型在图像识别、语音识别、自然语言处理、蛋白质分子结构预测以及搜索推荐等多个领域均展现出显著的应用效果。 在因果推断任务中,在完成因果效应识别之后,需…...
2025全自动企业站群镜像管理系统 | 支持繁简转换拼音插入
2025全自动企业站群镜像管理系统 | 支持繁简转换拼音插入 在全球化的今天,企业面临着管理多站点的挑战,尤其是跨语言和地理位置的站点。为此,我们设计了一套基于PHP的全自动企业站群镜像管理系统,它不仅能够自动化站点的管理&…...
基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发
基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发 摘要 随着人工智能技术的不断发展,语音识别在会议记录、语音笔记等场景中得到了广泛应用。本文介绍了一个基于Python和阿里云百炼大模型的语音识别与文本保存工具的开发过程。该工具能够高效地识别东…...
日志2025.2.1
日志2025.2.1 1.做了敌人状态机 public class EnermyStateMachine { public EnermyState currentState { get; private set; } public void InitializeState(EnermyState startState) { currentState startState; currentState.Enter(); } public void Change…...
GIS与相关专业软件汇总
闲来无事突然想整理一下看看 GIS及相关领域 究竟有多少软件或者工具包等。 我询问了几个AI工具并汇总了一个软件汇总,不搜不知道,一搜吓一跳,搜索出来了大量的软件,大部分软件或者工具包都没有见过,不知大家还有没有要…...
webrtc编译需要常用环境变量以及相关名词解释
set vs2022_installD:\\vs2022 set GYP_MSVS_OVERRIDE_PATHD:\\vs2022 set GYP_GENERATORSmsvs-ninja,ninja set WINDOWSSDKDIRD:\\Windows Kits\10 set DEPOT_TOOLS_WIN_TOOLCHAIN0 set GYP_MSVS_VERSION2022 这些环境变量是为了编译 WebRTC 时让 GYP/Depot Tools 正确找到 V…...
飞书项目流程入门指导手册
飞书项目流程入门指导手册 参考资料准备工作新建空间国际化配置新建工作项字段管理新建字段对接标识授权角色 流程管理基础说明流程节点配置流程节点的布局配置页面上布局按钮布局配置 流程节点驳回流程图展示自动化字段修改 局限性 参考资料 飞书官方参考文档:飞书…...
Android学习制作app(ESP8266-01S连接-简单制作)
一、理论 部分理论见arduino学习-CSDN博客和Android Studio安装配置_android studio gradle 配置-CSDN博客 以下直接上代码和效果视频,esp01S的收发硬件代码目前没有分享,但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动…...
docker直接运行arm下的docker
运行环境是树莓派A 处理器是 arm32v6 安装了docker,运行lamp 编译安装php的时候发现要按天来算,于是用电脑vm下的Ubuntu系统运行arm的docker 然后打包到a直接导入运行就可以了 第一种方法 sudo apt install qemu-user-static 导入直接运行就可以了…...
