利用JAV A存储过程进行EXCEL导入
导入思路
顾问提供的PO导入FORM已经给了我们一个导入数据到系统的一个模板,基本能够满足我们的要求,该FORM主要完成以下动作:
1.显示文件上传页面给用户选择文件
2.将文本文件以字符流的形式存入到fnd_lobs表的BLOB字段
3.从BLOB字段读取数据,通过逗号分割(,)的方式从BLOB字段获取每个字段的值
4.存入系统临时表进行后续的导入处理
该方法的主要缺点在于需要用户手工将EXCEL文件存为.csv文件(即普通.txt文件),以及通过逗号分割进行解析字符流的方式进行文本文件的处理,如果用户提供的EXCEL单元格的数据中有逗号(,),则解析会出错。
该方法可以利用JAV A存储过程进行改进为:
1.在上传页面用户直接上传EXCEL文件
2.将文本文件以字符流的形式存入到fnd_lobs表的BLOB字段
3.以BLOB字段作为文件输入流,调用JAV A存储过程获取EXCEL文件内容
4.存入系统临时表进行后续的导入处理
在新方法的第3步中,调用JAV A类型的存储过程,引用处理EXCEL的JAV A API进行文件内容的读取。
由于是直接解析EXCEL文件,可以减少出错的概率,另外也可以通过对API 进行替换的方式来处理其他类型的文件,如WORD或XML文件等。
导入实现
具体细节部分请参照附件的XXEXCELIMPORT.fmb文件,以下部分只说明主要步骤。
创建FORM
1.创建临时表块以及上传功能按钮
2.添加上传文件功能,
以上FORM部分具体参照顾问提供的PO导入FORM以及其中的文件上传程序段UPLOAD_FILE
建立java存储过程
1.建立java文件
a)具体见附件中的java文件
2.编译java,生成.class文件
a)使用javac或者是集成开发环境生成.class,示例使用eclipse集成开发环境自动生
成. class文件
3.将.class文件上传到服务器某个文件夹中
a)在示例中将.class文件上传到/tmp/yz文件夹
4.登录服务器,切换到ORA用户(如TESTORA、VISORA),进入上传的文件夹目录
a)su – visora
b)cd /tmp/yz
5.使用loadjava程序将class文件以及引用的jar包编译上数据库
a)loadjava –user apps/apps –resolve jxl.jar // 只需要执行一次就行了
b)loadjava -user apps/apps -resolve EXCELIMPOR T.class
6.在PLSQL或SQLPLUS中创建存储过程
a)create or replace procedure XXEXCELIMPORT(file_id number)
as language java
name'EXCELIMPORT.ExcelImport(int)';
cd ..
cd testmgr
cd tmp
cd lqc
ls pwd
修改UPLOAD_FILE
将顾问提供的程序段UPLOAD_FILE中的xxgem_po_import.import_file部分去除掉,调用自己创建的存储过程:
1.去除
2.添加
g processing。