关于从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
这样的话就省去了自己去数据库去找那些数据, 然后给手动导出来了,
只需要点一下按钮就可以去喝点水了, 回头直接看导出信息或者报错问题就可以了 嘻嘻

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐