从Oracle数据库导出clob字段的内容
关于从Oracle数据库导出clob字段的内容,手动导出是一种方式, 一般clob中都是比较大的字段内容,至少超过4000才可以用到 clob,一开始, 我是直接从数据库字段内容中复制粘贴出来, 自己做一个和数据库一样的文件类型的, 因为直接用数据库的导出格式的话, 导出来的clob字段就只是一个"CLOB"四个字母,但是当数据量大起来以后(50份文件, 这个时候我已经感觉到手动会很慢了, 而且时
关于从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
这样的话就省去了自己去数据库去找那些数据, 然后给手动导出来了,
只需要点一下按钮就可以去喝点水了, 回头直接看导出信息或者报错问题就可以了 嘻嘻
更多推荐
所有评论(0)