问题引入:
执行完合库后的脚本后,运行程序,操作业务流程,在启动流程时,出错,报NullPointException和ClassNotFoundException;
分析原因:
备份数据库错误,未成功备份含有blob类型的工作流表数据
探索:
途径:百度、CSDN、博客园、知乎等
方法:
1、短数据可以通过
insert into act_ge_bytearray values('9999',1,'ewwe','56',rawtohex(''),0);
其中rawtohex函数可以把字符串转换成blob;
2、超长数据或者不同类型的文件,添加表中
可以使用匿名函数的方式
--如系统是windows
--把act_blob解压,比如windows系统E盘,
--创建文件存储目录,需与数据库服务器同一系统
create or replace directory IMAGES as 'E:\act_blob';
--如系统是 linux系统
--把act_blob解压,比如/opt/pic,
--创建文件存储目录,需与数据库服务器同一系统
create or replace directory IMAGES as '/opt/pic';
--在以下目录名必须大写
declare
l_bfile bfile;
l_blob blob;
begin
update act_ge_bytearray set bytes_=empty_blob() where ID_='58'
return bytes_ into l_blob;
--读取图片文件对象
l_bfile := bfilename('IMAGES','58.xml'); --目录必须大写
--打开图片文件对象
dbms_lob.open(l_bfile,dbms_lob.file_readonly);
--把图片文件对象写入Blob数据中
dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile));
dbms_lob.close(l_bfile);
commit;
end;
/
确定方法:
由于工作流中存储的数据是不同文件类型的,有txt、xml、PNG的,因此第一种方式不可用,则使用第二种;
准备工作:
1、在一个完整的数据库中,工作流表中的数据完整,以便导出数据;
2、使用PL/SQL查询此表数据
SELECT * FROM ACT_GE_BYTEARRAY
从上图中可以看到blob存储的文件类型由三种,接下来需要把这三种数据保存为文件
3、点击图中的三个点打开数据编辑框
4、然后点击最上面的菜单栏中的保存按钮
5、在弹出的文件框中选择目录进行保存
anthor:su1573