1. 组件介绍
参数赋值组件用于根据输入的记录来更新ETL编辑器中定义的参数值。参数值可以设置输入的字段、表达式、宏等。
在交换任务执行的过程中,通过参数赋值组件改变参数的取值,供后续组件调用参数。
每次点击“新增”,都会新增一个参数(不重复),参数值取的是默认值。新增条数限制:<= 参数总数。超出限制,给出提示,如下:
2. 使用场景
常用场景1
现存在一张学生成绩表表结构及数据如下,表中记录了2024学年学生期末考试成绩,现需要将成绩输出成文本的形式存储在本地中。每一次的考试成绩都需要单独放在一个文本中存放,要求输出的时候文件名称带上当天的日期。
进入ETL任务设计页面,拖入表输入、表达式、参数赋值、平面文件输出组件,新建一个参数time。
表输入选择学生成绩表STUDENT_SCORES,参数赋值组件给time 参数值赋值为today(),通过today函数来获取当前日期。
平面文件输出组件文件名设置为学生成绩+当前日期的格式。
这样任务每次执行都会在服务器指定路径下生成一个学生成绩+当天日期的文件
常用场景2
某企业有存在一张员工信息表,其结构以及数据如下所示。
该表中包含了正式员工、非正式员工、外包员工等。现在人事部需要每天把当天转正员工信息录入到系统中去。由于sql语句中的where 条件无法直接填写数据库函数,但是ETL组件中的sql输入组件中的sql语句可支持填写参数,所以我们通过参数赋值组件与sql输入组件组合来实现此场景。为了实现这个场景,我们进入ETL任务设计页面,定义全局参数time,拖入参数 赋值组件、sql输入组件、表达式组件、表输出组件。
参数赋值组件赋值为today(),为自动获取当天日期。Sql输入组件 手动编写sql语句,设置where条件为等于当天日期。
配置好表达式组件、表输出组件后,执行任务即可。这样每次任务执行获取的都是当天转正的员工数据。
3. 使用场景
场景一:其他库——>Oracle
将非oracle大数据量级的数据写入另oracle库,要想高效率写入,可使用oracle装载组件,该组件利用sqlldr命令行工具进行文本数据的快速装载,对于大数据量的处理比insert的效率高很多。具体设置如下:
使用组件:表输入+平面文件输出+oracle装载,库表通过【平面文件输出】将该表数据以文件方式导出,再通过【oracle装载】将数据写入oracle库中。
源库可以选任意已兼容的库,将原表中的数据已文件的形式输出到服务器端。 然后通过oracle装载组件读取该文件,将文件数据写入目标库表中。由于平面文件输出组件只能输出到产品所在的服务器路径,故该场景下的边缘采集节点以及sqlldr、sqluldr2工具只能部署在产品所在服务器下。
此处需要注意的是平面文件输出的文件格式相关配置要与oracle装载组件中的配置保持一致,例如列分隔符、字符集等。配置不一致可能导致任务运行失败或数据读取不正确等问题。
场景二:Oracle——>Oracle
Oracle到oracle库之间大数据量的数据传输可通过oracle卸载组件与oracle装载组件组合使用一次来提高传输效率。
Etl任务界面拖入表输入组件、oracle 卸载组件、oracle装载组件,其中表输入组件数据源配置必须为oracle数据库。
配置oracle卸载组件、oracle装载组件,配置示例如下。
装载组件中如果目标表已存在的情况下还需要手动配置字段映射。
配置完成后执行任务即可。执行日志中会记录sqlldr过程中数据的读取传输情况。
注意事项:
①.针对字段类型为TIMESTAMP时间戳类型的字段,进行卸载时会遇到ORA-24345: A Truncation or null fetch error occurred
类似的错误,此错误为sqluldr2执行的报错,程序无法修改可变通解决,解决方法见EDG-21226
②.Oracle装载组件字段设置中加载方式有4种。
INSERT:这是默认的加载方法。使用INSERT 时,目标表必须为空。如果尝试在已有数据的表中使用此方法插入数据,将会导致错误。
APPEND:允许在不删除现有数据的情况下向表中添加新行。即使表中有数据,也可以继续添加新的记录。这对于需要保留现有数据并增加新数据的情况非常有用。
REPLACE:这个选项首先会删除表中的所有现有数据(类似于执行 DELETE FRoM table_name;),然后加载新的数据。与TRUNCATE 不同,REPLACE 可以处理有外键约束的表,因为它实际上执行的是 DELETE 操作而不是 TRUNCATE。 TRUNCATE:与REPLACE 类似,但它通过执行 TRUNCATE命令来快速删除表中的所有数据,然后再加载新数据。由于TRUNCATE 是一个DDL操作,它不能回滚,并且通常比 DELETE更快,因为它不会记录单个行的删除操作。但是,使用TRUNCATE 可能需要注意外键约束的问题。
5.4.2.4.1.14.5 sqluldr2安装部署
Linux(Centos7.6)安装sqluldr2
简介
本资源文件提供了在Linux(Centos7.6)系统上安装sqluldr2的详细步骤。sqluldr2是一款高效的Oracle数据导出工具,能够快速导出大量数据为文本或CSV格式。
安装步骤
1. 配置环境变量
首先,切换到Oracle用户并编辑.bashrc文件,添加以下环境变量:
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:$ORACLE_HOME/lib:/lib:/usr/lib
保存并退出后,使配置生效:
source ~/.bashrc
2. 上传并解压sqluldr2
将sqluldr2的压缩包上传到服务器,并解压到指定目录:
cd /usr/local/oracle/product/11.2.0/bin/
rz
解压后,重命名文件:
mv sqluldr2_linux64_10204.bin sqluldr2.bin
3. 授权
切换回root用户,对sqluldr2文件进行授权:
chown -R oracle:oinstall sqluldr2.bin
4. 验证安装
切换回Oracle用户,进入sqluldr2所在目录,使用ldd命令验证依赖库:
ldd sqluldr2.bin
如果出现libclntsh.so.10.1 => not found,则需要创建软链接:
cd $ORACLE_HOME/libln -s libclntsh.so libclntsh.so.10.1
5. 使用sqluldr2
使用以下命令进行sqluldr2验证:
./sqluldr2.bin
输出类似信息代表sqluldr2 已正常安装。
注意事项
确保Oracle数据库已正确安装并配置。
根据实际需求调整sqluldr2的参数配置。
边缘采集节点所在的服务器安装sqlldr,sqlldr本身不支持连接远程数据源,所以要在安装的时候装oracle客户端。
边缘采集节点主机上的 配置环境变量如下,保证sqlldr命令,在任意位置执行能生效。
vi ~/.bashrc
# Oracle Settings
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF
配置好了后,然后再执行下 source ~/.bashrc
在服务器任意位置执行sqlldr,输出一下内容,代表sqlldr 配置成功。
请先登录