csv文件导入数据库工具类

首先导入javacsv.jar

<dependency>
            <groupId>net.sourceforge.javacsv</groupId>
            <artifactId>javacsv</artifactId>
            <version>2.0</version>
        </dependency>


public class CsvUtil {
	private static final Logger logger = Logger.getLogger(CsvUtil.class.getName());
	public static List<CsvInfo> csvUtil(String fileName, InputStream inputStream) {
		List<CsvInfo> csvList=new ArrayList<>();
		CsvInfo csv = null;
		int exccseNum=0;
		int erryNum=0;
		int allNum=0;
		CsvReader r;
		try {
                        //在这里你可以使用数据流或者文件路径,因为我是导入,所以使用的流
                       r = new CsvReader(inputStream, ',', Charset.forName("UTF-8"));
			if(r==null){
				throw new Exception("~~~~~~~~~you give me a null");
			}
			// 读取表头
			r.readHeaders();
			// 逐条读取记录,直至读完
			while (r.readRecord()) {
                                //因为要求是#隔开的算俩条,所以使用split解析为数组
                               String adId = r.get(0);
				String[] asIds = adId.split("#");
				String bomId = r.get(1);
				String[] bomIds = bomId.split("#");
				String adName = r.get(2);
				String[] asNames = adName.split("#");
				String bomName = r.get(3);
				String[] bomNames = bomName.split("#");
				if (asIds.length > 1 && asNames.length > 1 && bomIds.length > 0 && bomNames.length > 0) {
					for (int i = 0; i < asIds.length; i++) {
						csv = newCsvInfo(asIds[i], asNames[i], bomIds[0], bomNames[0]);
						csvList.add(csv);
						exccseNum++;
						allNum++;
					}
				} else if (asIds.length > 0 && asNames.length > 0 && bomIds.length > 1 && bomNames.length > 1) {
					for (int i = 0; i < bomIds.length; i++) {
						csv = newCsvInfo(asIds[0], asNames[0], bomIds[i], bomNames[i]);
						csvList.add(csv);
						exccseNum++;
						allNum++;
					}
				} else if (asIds.length == 1 && asNames.length == 1 && bomIds.length == 1 && bomNames.length == 1) {
					csv = newCsvInfo(asIds[0], asNames[0], bomIds[0], bomNames[0]);
					csvList.add(csv);
					exccseNum++;
					allNum++;
				}else {
					erryNum++;
					allNum++;
					continue;
				}
				
			}
			logger.info("~~~~~~~总共导入次数="+allNum+"~~~~~~成功导入次数="+exccseNum+"~~~~~~失败导入次数="+erryNum);
			r.close();
		} catch (Exception e) {
			logger.error("导入失败", e);
		} finally {
			return csvList;		  
		}

	}

	private static CsvInfo newCsvInfo(String dsmDeptId, String dsmDeptName, String ssoDeptId, String ssoDeptName) {
		CsvInfo csv = new CsvInfo();
		csv.setDsmDeptId(dsmDeptId);
		csv.setDsmDeptName(dsmDeptName);
		csv.setSsoDeptId(ssoDeptId);
		csv.setSsoDeptName(ssoDeptName);
		return csv;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值