关于从Oracle数据库导出clob字段的内容, 手动导出是一种方式, 一般clob中都是比较大的字段内容, 至少超过4000才可以用到 clob,
一开始, 我是直接从数据库字段内容中复制粘贴出来, 自己做一个和数据库一样的文件类型的, 因为直接用数据库的导出格式的话, 导出来的clob字段就只是一个"CLOB"四个字母,
但是当数据量大起来以后(50份文件, 这个时候我已经感觉到手动会很慢了, 而且时间长了以后还会影响自身电脑的性能和寿命 ),
于是我身为一个java程序员, 就想到了用java写一个方法, 然后用swagger去调用一下, 实现这一步操作, 省出来的时间还可以对一对数据之类的,
这个方法用了io去实现, 不需要什么传输参数, 就相当于一个按钮而已:
@ApiOperation("导出报告数据")
@PostMapping("/exp")
public void exp() throws Exception {
// 第一步, 先查出表内的所有数据;
List<Map<String, Object>> listAll = resultService.listAll();
// 报告要存放的文件夹位置
File file = new File("D:/zhengxin");
if (!file.exists()) {
file.mkdir();
}
for (int i = 0; i < listAll.size(); i++) {
// 根据id去确定每一个clob的内容;
String findCreditById = resultService.findCreditById(listAll.get(i).get("ID").toString());
String cert_no = listAll.get(i).get("CERT_NO").toString();
String id = listAll.get(i).get("id").toString();
File file1 = new File("D:/zhengxin/"+cert_no);
if (!file1.exists()) {
file1.mkdir();
}
File file2 = new File("D:/zhengxin/"+cert_no+"/"+ id + ".html");
if (!file2.exists()) {
file2.createNewFile();
}
// 输出位置,以及文件名称
FileOutputStream fos = new FileOutputStream("D:/zhengxin/"+cert_no+"/"+ id + ".html");
byte[] bytes = findCreditById.getBytes();
// 写入数据
fos.write(bytes);
// 关闭流
fos.close();
}
}
因为我用的是SpringBoot开发, 所以直接写了web层的方法, service层实现类的方法直接备注到了,
看效果
swagger中就是这么一个按钮, 点击了以后再去文件夹查看是否有导出数据
因为这里的数据比较有意义, 就不展示出来看了, 只是看一眼效果好了就好
OK
这样的话就省去了自己去数据库去找那些数据, 然后给手动导出来了,
只需要点一下按钮就可以去喝点水了, 回头直接看导出信息或者报错问题就可以了 嘻嘻