导出几百万的数据,怎么动态的往csv文件末尾追加数据

场景:一个sql需要关联4、5张表,查询出来的数据达到两百多万,这个时候,很容易造成cup100%使用率,慢查询,服务器内存溢出等问题。

解决方案:1:使用索引。2:把这个sql查询出来的数据,尽可能的按照某种条件分批次查询出来。

既然是分批次查询出来,那么就需要解决如何在原有文件的基础上,在末尾动态的追加数据

下边有一个工具可以使用。

1:工具类:缓冲区用的是:BufferedWriter

     参数解释

      List exportData:参数类型:List> exportData = new ArrayList>();存储的是要导出的数据集合

LinkedHashMap map, 表头,这个你看见工具类会发现是表头和数据对应的关键

String outPutPath, csv文件要导出的位置

String fileName,文件名字但不包含.csv,工具类里边有不用写

String exportName:文件名字,是用来判断生成是否生成过csv文件

在工具类中1.2是关键,true是关键中的关键,没有他是不会追加的,我用的是append方法进行末尾追加

public static String createCSVFileMore(
            List exportData, LinkedHashMap map, String outPutPath, String fileName,String exportName) {
    File csvFile = null;
    BufferedWriter csvFileOutputStream = null;
    String path = null;
    try {
        File file = new File(outPutPath);
        if (!file.exists()) {
           file.mkdirs();
         }
			
        List ls=new ArrayList();
        //1:根据文件路径查询文件夹下是否含有文件
        File[] listFiles = file.listFiles();
        if(listFiles.length>0) {
            //1.1:文件夹下含有文件,并获取所有文件的名字
            for(int i=0;i

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(工具包-随笔)