csv分批写入mysql_分批次读取csv文件,并保存到数据库

读取上百万行的csv文件,由于数据量太大,一次性将csv的内容读取出来,保存在内存中,会导致内存严重吃不消,最后直接宕机,所以建议采取分批次读数据然后保存数据库中,以下是简单测试方法,可根据具体需求做修改。对大批量数据的操作,建议用jdbc直接批量添加,修改,删除等操作。

import java.util.List;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.util.ArrayList;

public class ReadCsv {

public static void main(String[] args) throws FileNotFoundException{

File csv = new File("D:\\test.csv"); // CSV文件路径

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader(csv));

String line = "";

while ((line = br.readLine()) != null){ //读取到的内容给line变量

while(getList(br)){}

}

} catch (IOException e){

e.printStackTrace();

}

}

public static boolean getList(BufferedReader br){

List allString = new ArrayList<>();

boolean status = false;

String everyLine = "";

try {

int index = 0;

while((everyLine = br.readLine()) != null){

String [] strList = everyLine.split(",");

System.out.println(everyLine);

allString.add(strList);

index ++;

if(index == 3){

status = true;

break;

}

}

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("总条数为:"+ allString.size());

//取值

for (int i = 0; i < allString.size(); i++) {

System.out.println(allString.get(i)[0]);

}

//这里做新增操作,保存到数据库。。。。。。

return status;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值