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

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实战 本文使用达梦的快速装载工具&#xff0c;对测试表进行数据导入导出。 新建测试表 create table “BENCHMARK”.“TEST_FLDR” ( “uid” INTEGER identity(1, 1) not null , “name” VARCHAR(24), “begin_date” TIMESTAMP(0), “amount” DECIMAL(6, 2), prim…...

Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)

文章目录 Kafka 副本机制&#xff08;包含AR、ISR、OSR、HW 和 LEO 介绍&#xff09;1. 副本的基本概念2. 副本同步和一致性2.1 AR&#xff08;Assigned Replicas&#xff09;2.2 ISR&#xff08;In-Sync Replicas&#xff09;2.3 OSR&#xff08;Out-of-Sync Replicas&#xf…...

爬虫基础(二)Web网页的基本原理

一、网页的组成 网页由三部分构成&#xff1a;HTML、JavaScript、CSS。 &#xff08;1&#xff09;HTML HTML 相当于网页的骨架&#xff0c;它通过使用标签来定义网页内容的结构。 举个例子&#xff1a; 它把图片标签为img、把视频标签为video&#xff0c;然后组合到一个界面…...

外网访问禅道软件项目管理系统

禅道项目管理软件是一款国产的开源免费项目管理软件&#xff0c;专注于研发项目管理&#xff0c;旨在帮助企业或团队提高项目管理的效率和质量。 本文将详细的介绍如何在 Windows 系统电脑端下载运行禅道软件项目管理系统&#xff0c;并且结合路由侠内网穿透实现外网访问本地的…...

Python 梯度下降法(五):Adam Optimize

文章目录 Python 梯度下降法&#xff08;五&#xff09;&#xff1a;Adam Optimize一、数学原理1.1 介绍1.2 符号说明1.3 实现流程 二、代码实现2.1 函数代码2.2 总代码2.3 遇到的问题2.4 算法优化 三、优缺点3.1 优点3.2 缺点 四、相关链接 Python 梯度下降法&#xff08;五&a…...

笔试-二进制

应用题 将符合区间[l,r]内的十进制整数转换为二进制表示&#xff0c;请问不包含“101”的整数个数是多少&#xff1f; 实现 l int(input("请输入下限l&#xff0c;其值大于等于1&#xff1a;")) r int(input("请输入上限r&#xff0c;其值大于等于l&#x…...

springboot 2.7.6 security mysql redis jwt配置例子

数据库结构用的是若依的数据库基本结构,ruoyi.vip。 总体参考了文章&#xff1a;https://blog.csdn.net/qq_45847507/article/details/126681110 本文章只包含不同的地方&#xff0c;相同的不再赘述。 1、创建spring工程&#xff0c;jdk1.8&#xff0c;maven。 pom.xml中依赖部…...

FreeRTOS从入门到精通 第十六章(任务通知)

参考教程&#xff1a;【正点原子】手把手教你学FreeRTOS实时系统_哔哩哔哩_bilibili 一、任务通知简介 1、概述 &#xff08;1&#xff09;任务通知顾名思义是用来通知任务的&#xff0c;任务控制块中的结构体成员变量ulNotifiedValue就是这个通知值。 &#xff08;2&#…...

TensorFlow 简单的二分类神经网络的训练和应用流程

展示了一个简单的二分类神经网络的训练和应用流程。主要步骤包括&#xff1a; 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与部署 加载和应用已训练的模型 1. 数据准备与预处理 在本例中&#xff0c;数据准备是通过两个 Numpy 数…...

无人机图传模块 wfb-ng openipc-fpv,4G

openipc 的定位是为各种模块提供底层的驱动和linux最小系统&#xff0c;openipc 是采用buildroot系统编译而成&#xff0c;因此二次开发能力有点麻烦。为啥openipc 会用于无人机图传呢&#xff1f;因为openipc可以将现有的网络摄像头ip-camera模块直接利用起来&#xff0c;从而…...

.cc扩展名是什么语言?C语言必须用.c为扩展名吗?主流编程语言扩展名?Java为什么不能用全数字的文件名?

.cc扩展名是什么语言? .cc是C语言使用的扩展名&#xff0c;一种说法是它是c with class的简写&#xff0c;当然C语言使用的扩展名不止.cc和.cpp, 还包含.cxx, .c, .C等&#xff0c;这些在不同编译器系统采用的默认设定不同&#xff0c;需要区分使用。当然&#xff0c;编译器提…...

【MyDB】4-VersionManager 之 3-死锁及超时检测

【MyDB】4-VersionManager 之 3-死锁及超时检测 死锁及超时检测案例背景LockTable锁请求与等待管理 addvm调用addputIntoList&#xff0c;isInList&#xff0c;removeFromList 死锁检测 hasDeadLock方法资源释放与重分配 参考资料 死锁及超时检测 本章涉及代码&#xff1a;top/…...

【Linux】使用管道实现一个简易版本的进程池

文章目录 使用管道实现一个简易版本的进程池流程图代码makefileTask.hppProcessPool.cc 程序流程&#xff1a; 使用管道实现一个简易版本的进程池 流程图 代码 makefile ProcessPool:ProcessPool.ccg -o $ $^ -g -stdc11 .PHONY:clean clean:rm -f ProcessPoolTask.hpp #pr…...

【OpenGL】OpenGL游戏案例(二)

文章目录 特殊效果数据结构生成逻辑更新逻辑 文本渲染类结构构造函数加载函数渲染函数 特殊效果 为提高游戏的趣味性&#xff0c;在游戏中提供了六种特殊效果。 数据结构 PowerUp 类只存储存活数据&#xff0c;实际逻辑在游戏代码中通过Type字段来区分执行 class PowerUp …...

28. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表定时器与报表数据修正

这篇文章是《.NET 8 实战–孢子记账–从单体到微服务》系列专栏的《单体应用》专栏的最后一片和开发有关的文章。在这片文章中我们一起来实现一个数据统计的功能&#xff1a;报表数据汇总。这个功能为用户查看月度、年度、季度报表提供数据支持。 一、需求 数据统计方面&…...

Java 泛型<? extends Object>

在 Java 泛型中&#xff0c;<? extends Object> 和 <?> 都表示未知类型&#xff0c;但它们在某些情况下有细微的差异。泛型的引入是为了消除运行时错误并增强类型安全性&#xff0c;使代码更具可读性和可维护性。 在 JDK 5 中引入了泛型&#xff0c;以消除编译时…...

FPGA|使用quartus II通过AS下载POF固件

1、将开发板设置到AS下载挡位&#xff0c;或者把下载线插入到AS端口 2、打开quartus II&#xff0c;选择Tools→Programmer→ Mode选择Active Serial Programming 3、点击左侧Add file…&#xff0c;选择 .pof 文件 →start 4、勾选program和verify&#xff08;可选&#xff0…...

“新月之智”智能战术头盔系统(CITHS)

新月人物传记&#xff1a;人物传记之新月篇-CSDN博客 相关文章链接&#xff08;更新&#xff09;&#xff1a; 星际战争模拟系统&#xff1a;新月的编程之道-CSDN博客 新月智能护甲系统CMIA--未来战场的守护者-CSDN博客 目录 一、引言 二、智能头盔控制系统概述 三、系统架…...

php:代码中怎么搭建一个类似linux系统的crontab服务

一、前言 最近使用自己搭建的php框架写一些东西&#xff0c;需要用到异步脚本任务的执行&#xff0c;但是是因为自己搭建的框架没有现成的机制&#xff0c;所以想自己搭建一个类似linux系统的crontab服务的功能。 因为如果直接使用linux crontab的服务配置起来很麻烦&#xff0…...

【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

MinDoc 安装与部署

下载可执行文件 mindoc mindoc_linux_amd64.zip 上传并解压压缩包 cd /opt mkdir mindoc cd mindocunzip mindoc_linux_amd64.zip 创建数据库 CREATE DATABASE mindoc_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 配置数据库 将解压目录下 conf/app.conf.exam…...

从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础组件实现)

目录 基础组件实现 如何将图像和文字显示到OLED上 如何绘制图像 如何绘制文字 如何获取字体&#xff1f; 如何正确的访问字体 如何抽象字体 如何绘制字符串 绘制方案 文本绘制 更加方便的绘制 字体附录 ascii 6x8字体 ascii 8 x 16字体 基础组件实现 我们现在离手…...

windows系统如何检查是否开启了mongodb服务

windows系统如何检查是否开启了mongodb服务&#xff01;我们有很多软件开发&#xff0c;网站开发时候需要使用到这个mongodb数据库&#xff0c;下面我们看看&#xff0c;如何在windows系统内排查&#xff0c;是否已经启动了本地服务。 在 Windows 系统上&#xff0c;您可以通过…...

VS安卓仿真器下载失败怎么办?

如果网络不稳定&#xff0c;则VS的安卓仿真器很容易下载失败&#xff0c;如下 Downloaded file <USER_HOME>\AppData\Local\Temp\xamarin-android-sdk\x86_64-35_r08.zip not found for Android SDK archive https://dl.google.com/android/repository/sys-img/google_a…...

计算机网络一点事(24)

TCP可靠传输&#xff0c;流量控制 可靠传输&#xff1a;每字节对应一个序号 累计确认&#xff1a;收到ack则正确接收 返回ack推迟确认&#xff08;不超过0.5s&#xff09; 两种ack&#xff1a;专门确认&#xff08;只有首部无数据&#xff09; 捎带确认&#xff08;带数据…...

视频拼接,拼接时长版本

目录 视频较长&#xff0c;分辨率较大&#xff0c;这个效果很好&#xff0c;不耗用内存 ffmpeg imageio&#xff0c;适合视频较短 视频较长&#xff0c;分辨率较大&#xff0c;这个效果很好&#xff0c;不耗用内存 ffmpeg import subprocess import glob import os from nats…...

制造企业的成本核算

一、生产成本与制造费用的区别 (1)生产成本,是直接用于产品生产,构成产品实体的材料成本。 包括企业在生产经营过程中实际消耗的原材料、辅助材料、备品备件、外购半成品、燃料、动力包装物以及其它直接材料,和直接参加产品生产的工人工资,以及按生产工人的工资总额和规…...

doris:高并发导入优化(Group Commit)

在高频小批量写入场景下&#xff0c;传统的导入方式存在以下问题&#xff1a; 每个导入都会创建一个独立的事务&#xff0c;都需要经过 FE 解析 SQL 和生成执行计划&#xff0c;影响整体性能每个导入都会生成一个新的版本&#xff0c;导致版本数快速增长&#xff0c;增加了后台…...

LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略

LLMs之WebRAG&#xff1a;STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略 目录 STORM系统简介 1、Co-STORM 2、更新新闻 STORM系统安装和使用方法 1、安装 pip安装 直接克隆GitHub仓库 2、模型和数据集 两个数据集 FreshWiki数据集 WildSeek数据集 支持…...

鸿蒙HarmonyOS实战-ArkUI动画(页面转场动画)_鸿蒙arkui tab 切换动画

PageTransitionExit({type?: RouteType,duration?: number,curve?: Curve | string,delay?: number}) 在HarmonyOS中&#xff0c;PageTransitionEnter和PageTransitionExit是用于控制页面切换动画的参数。它们分别表示页面进入和退出时的动画。1. type&#xff08;动画类型…...