APEX从21.0版本开始,增强了数据加载(Data Loading)的功能。
现在可以实现更多的,数据加载过程中的定制化的操作。本文介绍如何把一个csv文本文件的数据和不存在于着csv文件中的数据合并后,加载到APEX中。
示范案例:数据库表里又A,B,C三列。但csv文件里只有B,C两列的数据,A列的数据需要通过一个选择列表,选择需要同时加载的值,与csv文件中的B,C列的值一起加载到APEX的表中。示例如下图:
第一步:数据加载定义
首先要在应用的“共享组件”的“数据源”里进行“数据加载定义”。要先准备一个包含字段名和数据的样本文件,可以是csv, excel, txt, xml, json格式。
选择一个需要加载的目的表。然后把前面说的样本文件加载到APEX里(这里的样本文件只用于数据加载定义,并不会加载数据到目的表)。
在创建数据加载定义的时候,要注意以下几点:
1,文件编码建议选择 UTF-8。(样本文件也要保存为UTF-8格式,尤其是csv和txt文件)
2,如果样本文件的字段名和目的表的字段名一致,APEX会自动进行匹配和映射。否则,则需要手工映射。不需要加载的字段就不做映射。
3,如果有日期和时间的数据,一定要定义好格式掩码。这点很重要。否则之后加载数据会失败。
定义好映射关系后,完成数据加载定义的创建。
第二步:创建数据加载页面
直接用创建页面的向导创建。在“数据加载属性”的“数据加载”里选择前面创建好的数据加载定义。
页面生成后,进入页面编辑页添加需要外部加载的列。这个案例里添加了4个项。注意:日期和时间的项同样需要定义格式掩码。
第三步:定制数据加载定义
回到“共享组件”的“数据加载定义”。打开前面创建好的数据加载定义。在“数据概要文件”里“编辑数据概要文件”
在这里要“添加列”,注意不是“添加数据列”
在“列类型”里,选择“SQL表达式”。”名称”是目的表对应的字段名。选择正确的数据类型。然后在“SQL表达式”里输入v('在第二步里创建的输入项名称’),例如:v('P53_SESSION_TYPE')。如果是日期和时间类型,要注意格式转义,例如下图示例:
简单的3步,完成定制化的数据加载。
注:上面第一步里用到什么格式的样本文件做数据加载定义。之后就需要用同样的格式来进行数据加载。即:如果数据加载定义用的是csv文件,则之后加载数据的时候同样也需要用csv文件,不能使用excel文件。
===========全文结束===========
更多Oracle APEX的知识和技巧,请猛戳下面二维码持续关注微信公众号“APEX中文社区”和“徐大爷的学习笔记”。
APEX中文社区
徐大爷的学习笔记