Java之利用openCsv将csv文件导入mysql数据库

前两天干活儿的时候有个需求,前台导入csv文件,后台要做接收处理,mysql数据库中,项目用的springboot+Vue+mybatisPlus实现,下面详细记录一下实现流程。

1.Controller层部分:

/**
 * 读取csv文件,批量插入到数据库中
 */
@RequestMapping("/importcsv")
@RequiresPermissions("xxx:xxxxx:xxx")
public R importCsv(@RequestParam("file") MultipartFile file) throws IOException, CsvException {
    if (null == file) {
        return R.error("上传文件为空");
    }
    List<xxxEntity> csvFileContentList = xxxService.getCsvFileContent(file);
    boolean b = xxxService.saveBatch(csvFileContentList);
    if (b) {
        return R.ok("文件导入成功");
    } else {
        return R.ok("文件导入失败");
    }
}

这里是先将前端传递过来的file交给getCsvFileContent方法处理,生成要批量插入的list,然后再用mybatisPlus做批量插入。

2.实现类部分:

@Override
public List<xxxEntity> getCsvFileContent(MultipartFile file) throws IOException, CsvException {
    //读取csv文件
    String charset = "GBK";
    Reader reader = new InputStreamReader(file.getInputStream(), charset);
    CSVReader csvReader = new CSVReader(reader);
    csvReader.readNext();

    List<String[]> csvList = csvReader.readAll();
    List<xxxEntity> xxxList = new ArrayList<>();
    xxxEntity xxx = null;
    for(String[] csv : csvList){
        xxx = new xxxEntity();
        if(null != csv && csv.length != 0){        //这里是查询要入库的数据是不是在数据库中已存在
            xxxEntity xxxx = findOneByxxxAndxxx(csv[0], csv[1]);
            if (xxxx == null) {
                xxx.setXxx(csv[0]);
                xxx.setXxx(csv[1]);
                xxx.setXxx(csv[2]);
            }else {
                continue;
            }
        }
         xxxList.add(xxx);
    }
    return xxxList;
}

这里会将你前端发送过来的文件做读取后直接入库,不会生成中间文件,希望这篇文章能对你有帮助,有问题可以评论区交流哦。

原文地址:https://www.cnblogs.com/ailanlan/p/12172698.html

时间: 2024-07-29 06:19:12

Java之利用openCsv将csv文件导入mysql数据库的相关文章

CSV文件导入Mysql出现的乱码等问题 (转载)

将*.csv文件导入mysql可使用LOAD DATA INFILE, 概要写法: Load data in file 具体语法使用可参照:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data 如果一个表中只有英文字符则导入不出现问题,写法也极其简单: LOAD DATA LOCAL INFILE 'D:\\ports.csv' INTO TABLE ports; 遇到的问题一:ports.csv文件中存在中文字符,导入

用脚本把csv文件导入mysql

1.windows做的csv文件默认是gbk字符集,而mysql设置了默认是utf8字符集,所以要把文件转为utf8格式. iconv -f GBK -t UTF8  /tmp/文件名.csv -o /tmp/文件名2.csv 2.用sql命令导入 load data infile '/tmp/mailut2.csv' into table db1.d fields terminated by ',' lines terminated by '\n' ignore 1 lines (id,ema

大数据量.csv文件导入SQLServer数据库

前几天拿到了一个400多M的.csv文件,在电脑上打开要好长时间,打开后里面的数据都是乱码.因此,做了一个先转码再导入数据库的程序.100多万条的数据转码+导入花了4分钟,感觉效率还可以.各位网友有更好的方法,请在留言中指点下,一起学习学习,多谢了. static void Main(string[] args) { int count = 0; string readerPath=@"C:\Users\Administrator\Desktop\readerDemo.csv"; st

将csv文件导入sql数据库

有一个csv文件需要导入到Sql数据库中,其格式为 "adb","dds","sdf" "adb","dds","sdf" ...... 先在sql数据库中建一个表,结构与csv文件相同(将数据,时间等都定义成nvarchar,否则出现错误). 然后执行: BULK INSERT [Order] FROM 'C:\abc.csv' WITH ( FIELDTERMINATOR = '&q

php操作csv文件导入mysql时中文乱码的解决办法

用网上通用的方法读取并上传csv文件内容进入mysql数据库中时,中文显示乱码,即使对数据用iconv函数转码后仍然乱码,这时可以用setlocale()函数: 这个函数经查阅是配置地域信息用的,在读取和写入csv数据前先用此函数进行定义,比如我的csv文件是无BOM的UTF-8格式,就先用如下函数进行定义: setlocale(LC_ALL, 'zh_CN.UTF8′); 然后再用iconv函数对数据内容进行转码入库等后续操作.

python 从csv文件插入mysql数据库

一个工作遇到的问题,将excel文件的内容插入到mysql数据库中. 总体思路是 excel文件-->转换成csv文件-->csv文件读取-->读取数据插入mysql数据库 用到python的两个库csv和MySQLdb 下面是具体的code: 代码中数据库部分没啥好记录的,特别记录一下csv库的用法: # Insert data from csv file.csv_file = file('3D_PTlabs.csv', 'rb')csv_reader = csv.reader(csv

使用copy命令把csv文件导入postgres数据库

1. 把excel另存为csv 2. 使用txt打开csv格式 3. 以UTF-8格式编码,另存为blacklist20141231.csv 4. 创建一个表 Create table backlist_20141231(日期 varchar(20),手机号码 nvarchar(20),渠道 nvarchar(50)); 5. 使用copy命令,copy backlist_20141231 from 'd:/blacklist20141231.csv' delimiter as ',' csv

CS文件导入MySQL数据库方法

>mysql 下执行命令: loaddatainfile'/mnt/share/patch_export.csv' //csv file path intotable`tablename` fieldsterminatedby','optionallyenclosedby'"'escapedby'"' linesterminatedby'\n'; 如果遇到权限问题的error,可以在连接mysql时加入参数--local-infile 即mysql -uroot -p datab

将csv格式数据导入MySql数据库

 将csv文件或者excel表格导入数据库的方法: Excel数据直接导入mysql会需要用到phpexcel开源类,详情使用可以参考这篇文章~ http://www.cnblogs.com/freespider/p/3284828.html 本文使用的方法是: Excel --> CSV-->MySql 首先将excel另存为csv文件,然后开始分析数据. 代码如下: <span style="font-size:18px;"><?PHP //将csv文