精华内容
下载资源
问答
  • java批量导入数据

    2017-02-24 16:08:00
    StringBuffer sb = new StringBuffe(); sb.append(str[1] + "#XT#"); sb.append(str[2]+"#XT#"); sb.append("\n");...byte date[] = sb.toString().getBytes();...InputStream in = new ByteArrayInputStream(dat...
    StringBuffer sb = new StringBuffe();
    sb.append(str[1] + "#XT#");
    sb.append(str[2]+"#XT#");
    sb.append("\n");
    byte date[] = sb.toString().getBytes();
    InputStream in = new ByteArrayInputStream(date);
    insertBeach(in);
    sb = new StringBuffer();
    
    public static void insertBeach(InputStream in){
            try{
                    conn = Util.getConnect();
                    String sql = "load data local infile 'sql.scv'  ignore table  Base.table fields terminated  by '#XT#' ";
                     ps = conn.prepareStatement (sql);
                      if(ps.isWrapperFor(com.mysql.jdbc.Statement.class)){
                      com.mysql.jdbc.PreparedStatement   pst  = ps.unwrap(com.mysql.jdbc.PreparedStatement.class);
                      pst.setLocalInfileInputStream(in);
                      pst.executeUpdate()
                }
            }catch(Exception e){
                e.printStackTrace();
           }finally{
                closePs(ps);
                closeConn(conn);
        }
    }
    

      

    转载于:https://www.cnblogs.com/zqzdong/p/6438975.html

    展开全文
  • java批量插入数据的一种实现 前言 定义了批量操作的接口,基于PreparedStatement和反射原理实现方法,适用于有计划的批量导入的业务需求,例如(1)定期导入大量数据到业务表,(2)接口接收批量数据入库!经实践,几...

    java非工具方法,批量导入数据的小白方法

    ~定义了批量操作的接口,基于PreparedStatement和反射原理实现方法,适用于有计划的批量导入的业务需求,例如(1)定期导入大量数据到业务表,(2)接口接收批量数据入库!经实践,几千万级的导入,可以在几分钟内完成。

    ~有时候觉得,还是原生SQL来的干脆。简单的代码是一种美,可以我还是把它变得臃肿了,是在是懒的动它了。代码在下载资源里备用。(https://download.csdn.net/download/marsface/12376475)

    展开全文
  • //5、写入实体数据 if(null != tbTaxOrderList && tbTaxOrderList.size() > 0){ for (int i = 0; i (); i++) { //3.2、创建行----内容行 row = sheet.createRow(i+1); TbTaxOrder order = (TbTaxOrder)...

    1.查询并返回结果list集合

    private List<TbTaxOrder> tbTaxOrderList = null;
    @RestController
    @RequestMapping("/core/order")
    public class TbTaxOrderController {
        public static final Logger LOGGER = Logger.getLogger("TbTaxOrderController");
        @Autowired
        private ITbTaxOrderService tbTaxOrderService;
        @Autowired
        private ITbTaxOilStationService stationService;
    
        private List<TbTaxOrder> tbTaxOrderList = null;
        
        /**
         * 根据取票方式和取票状态查询
         * @param params
         * @return
         */
        @RequestMapping(value = "/getByMethodAndStatus", method = RequestMethod.POST)
        public ResponseVO getByReceiveMethodAndOrderStatus(@RequestBody Map<String, Object> params) {
    
            try{
                String receiveMethod = (String) params.get("receiveMethod");
                String orderStatus = (String) params.get("orderStatus");
                String stationStaffId = (String) params.get("stationStaffId");
                if(StringUtil.isNotEmpty(orderStatus)){
                    String[] list = orderStatus.split(",");
                    params.put("list",list);
                }
                if (StringUtil.isEmpty(receiveMethod) || StringUtil.isEmpty(stationStaffId)) {
                    return ResultUtil.error("receiveMethod || stationStaffId 为空");
                }
                tbTaxOrderList = tbTaxOrderService.getByReceiveMethodAndOrderStatus(params);
                return ResultUtil.success(tbTaxOrderList);
            }catch (Exception e){
                e.printStackTrace();
                if(e instanceof TaxException){
                    return ResultUtil.error(e.getMessage());
                }
                return ResultUtil.error();
            }
        }
    
        /**
         * 导出开票记录到excel
         * @return
         */
        @RequestMapping(value = "/DownLoadExcel", method = RequestMethod.POST)
        public ResponseVO DownLoadExcel() {
    
            try{
                //格式化时间
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
                //1、创建工作簿
                Workbook wb = new XSSFWorkbook();
                //1.1、设置表格的格式----居中
                CellStyle cs = wb.createCellStyle();
                //   cs.setAlignment(HorizontalAlignment.CENTER);
                //2.1、创建工作表
                Sheet sheet = wb.createSheet("Excel download");
                //2.2、合并单元格
    //            sheet.addMergedRegion(new CellRangeAddress(4, 8, 5, 9));
                //3.1、创建行----表头行
                Row row = sheet.createRow(0);
                //4、创建格
                Cell cell = row.createCell(0);
                cell.setCellValue("油卡号");
                cell.setCellStyle(cs);
                cell = row.createCell(1);
                cell.setCellValue("油卡手机号");
                cell.setCellStyle(cs);
                cell = row.createCell(2);
                cell.setCellValue("开票金额");
                cell.setCellStyle(cs);
                cell = row.createCell(3);
                cell.setCellValue("截止时间");
                cell.setCellStyle(cs);
                cell = row.createCell(4);
                cell.setCellValue("公司名称");
                cell.setCellStyle(cs);
                cell = row.createCell(5);
                cell.setCellValue("开票申请时间");
                cell.setCellStyle(cs);
                cell = row.createCell(6);
                cell.setCellValue("取票状态");
                cell.setCellStyle(cs);
                cell = row.createCell(7);
                cell.setCellValue("取票方式");
                cell.setCellStyle(cs);
                //5、写入实体数据
                if(null != tbTaxOrderList && tbTaxOrderList.size() > 0){
                    for (int i = 0; i < tbTaxOrderList.size(); i++) {
                        //3.2、创建行----内容行
                        row = sheet.createRow(i+1);
                        TbTaxOrder order = (TbTaxOrder)tbTaxOrderList.get(i);
                        //第几行第几格  第一行第一格为“code”
                        row.createCell(0).setCellValue(order.getCardCode());
                        row.createCell(1).setCellValue(order.getBindPhone());
                        if(null != order.getBillAmount()){
                            row.createCell(2).setCellValue(order.getBillAmount().toString());
                        }else{
                            row.createCell(2).setCellValue("");
                        }
    
                        if(null != order.getEndDate()){
                            String endDate = formatter.format(order.getEndDate());
                            row.createCell(3).setCellValue(endDate);
                        }else{
                            row.createCell(3).setCellValue(order.getEndDate());
                        }
                        row.createCell(4).setCellValue(order.getCompany());
                        String insertDate = formatter.format(order.getInsertDate());
                        row.createCell(5).setCellValue(insertDate);
                        if("1".toString().equals(order.getReceiveMethod())){
                            row.createCell(6).setCellValue("未办理");
                        }else if("2".toString().equals(order.getReceiveMethod())){
                            row.createCell(6).setCellValue("开票中");
                        }else if("3".toString().equals(order.getReceiveMethod())){
                            row.createCell(6).setCellValue("开票完成");
                        }else if("4".toString().equals(order.getReceiveMethod())){
                            row.createCell(6).setCellValue("开票请求驳回");
                        }else {
                            row.createCell(6).setCellValue("已邮寄 或 已自提");
                        }
                        if("1".toString().equals(order.getReceiveMethod())){
                            row.createCell(7).setCellValue("默认不选择");
                        }else if("12".toString().equals(order.getReceiveMethod())){
                            row.createCell(7).setCellValue("场站自取");
                        }else{
                            row.createCell(7).setCellValue("邮寄");
                        }
    
                    }
    
                    //6、将文件储存到指定位置
                    try {
                        FileOutputStream fout = new FileOutputStream("D:\\" + new Date().getTime() + ".xlsx");
                        wb.write(fout);
                        fout.close();
                        return ResultUtil.success("导出完成");
                    } catch (IOException e) {
                        e.printStackTrace();
                        return ResultUtil.error("导出失败");
                    }
                }else{
                    return ResultUtil.error("tbTaxOrderList 不能为空");
                }
    
            }catch (Exception e){
                e.printStackTrace();
                if(e instanceof TaxException){
                    return ResultUtil.error(e.getMessage());
                }
                return ResultUtil.error();
            }
        }
    
       
    }
    

     

     

    展开全文
  • 今天在网上找了一个批量数据导入到es中的java代码,代码主要逻辑如下:// 读取要导入数据的文件 BufferedReader br = new BufferedReader(new FileReader( "D:\\test\\test.txt")); String json = null; int count...

    今天在网上找了一个批量数据导入到es中的java代码,代码主要逻辑如下:

    // 读取要导入数据的文件
    BufferedReader br = new BufferedReader(new FileReader(
    		"D:\\test\\test.txt"));
    String json = null;
    int count = 0;
    // 开启批量插入
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    while ((json = br.readLine()) != null) {
    	bulkRequest.add(client.prepareIndex("test", "all")
    			.setSource(json));
    	// 每一千条提交一次
    	if (count % 1000 == 0) {
    		bulkRequest.execute().actionGet();
    		System.out.println("提交了:" + count);
    	}
    	count++;
    }
    bulkRequest.execute().actionGet();
    System.out.println("插入完毕");
    br.close();
    运行后发现一个问题,我100多万条的数据,导入到es中怎么生成了1000多万条,而且还是在没有完全导入的情况下

    然后用小批量数据导入到es,再把这些数据导出来,发现有好多重复的数据

    为什么会重复呢,原因是在每一千条提交一次代码这块,第一次一千条提交了,并没有把bulkRequest置空,所以第二次提交的时候,会提交两千条,包括第一次已经提交的一千条,然后我们自己也没有设置_id,所以es会自动给数据生成一个_id,即使是重复的数据,搞清楚了原因,下面来说解决方法,主要有两种:

    第一种就是在提交了一千条后,对bulkRequest进行重置,因为bulkRequest并没有重置的方法,所以可以新建一个bulkRequest,类似于重置,具体代码如下:

    // 读取要导入数据的文件
    BufferedReader br = new BufferedReader(new FileReader(
    		"D:\\test\\test.txt"));
    String json = null;
    int count = 0;
    // 开启批量插入
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    while ((json = br.readLine()) != null) {
    	bulkRequest.add(client.prepareIndex("test", "all")
    			.setSource(json));
    	// 每一千条提交一次
    	if (count % 1000 == 0) {
    		bulkRequest.execute().actionGet();
    		//此处新建一个bulkRequest,类似于重置效果
    		bulkRequest = client.prepareBulk();
    		System.out.println("提交了:" + count);
    	}
    	count++;
    }
    bulkRequest.execute().actionGet();
    System.out.println("插入完毕");
    br.close();
    第二种就是自己设置_id,确保每一条数据只有一个_id,这样的话,即使数据重复了,因为_id是一样的,所以es会进行更新,这样的话并没有从根源上解决数据重复的问题,只是重复数据会更新,这样的话效率会慢,具体代码如下:

    // 读取要导入数据的文件
    BufferedReader br = new BufferedReader(new FileReader(
    		"D:\\test\\test.txt"));
    String json = null;
    int count = 0;
    // 开启批量插入
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    while ((json = br.readLine()) != null) {
        //设置_id为count
    	bulkRequest.add(client.prepareIndex("test", "all",
    	                   String.valueOf(count)).setSource(json));
    	// 每一千条提交一次
    	if (count % 1000 == 0) {
    		bulkRequest.execute().actionGet();
    		//此处新建一个bulkRequest,类似于重置效果
    		System.out.println("提交了:" + count);
    	}
    	count++;
    }
    bulkRequest.execute().actionGet();
    System.out.println("插入完毕");
    br.close();

    建议使用第一种方法,效率会快很多。



    展开全文
  • java 批量导入excel数据

    热门讨论 2012-04-04 12:46:37
    java平台中批量将excel表格中数据导入到数据库中
  • 需求:把一个500M的txt文件导入mysql数据库,数据量大概有几千万。1、项目架构项目采用微服务架构,上传文件的后台管理系统是作为应用层,业务处理的作为服务层,应用层和服务层都有多个节点。如果是单一节点处理,...
  • 主要为大家详细介绍了Java实现Excel批量导入数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 产品说导入太慢了,一样的数据量另外一个系统只需要1分钟,我们要5分钟。。。。 开始以为是因为POI在解析07版本的Excel时候,因为数据量太多所以慢了,后面看下日志,发现是在入库的时候花的时间。 原因:  原来...
  • 标题这么麻烦,其实是为了让大家能搜到我啦,嘻嘻,这篇文章主要的内容就是本地有个txt文件,或者其他格式的文件,使用java,把这个文件里数据批量导入到hbase的某个表中。 这只是个简单的笨办法啦、适合类似我...
  • package ...import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Date;import...
  • neo4j批量导入数据有两种方法,第一种是使用cypher语法中的LOAD CSV,第二种是使用neo4j自带的工具neo4j-admin import。LOAD CSV导入的文件必须是csv文件,位置可以是本地的,或通过http、https、ftp等url指定位置。...
  • java批量导入Excel数据到数据库

    千次阅读 2018-01-24 17:15:26
    * 读取出filePath中的所有数据信息 * @param filePath excel文件的绝对路径 */ public static void getDataFromExcel2(String filePath,Person person){ //判断是否为excel类型文件 if (!filePath....
  • 手动录入也无妨,但是对于大量数据呢,手动录入显然已经不显示,而且,更多的时候,我们呢想在软件上增加一个数据批量导入,这样不管是谁在用这款软件,都可以方便的管理已有数据,那么我们最常用的数据管理器是.....
  • 需求:把一个500M的txt文件导入mysql数据库,数据量大概有几千万。1、项目架构项目采用微服务架构,上传文件的后台管理系统是作为应用层,业务处理的作为服务层,应用层和服务层都有多个节点。如果是单一节点处理,...
  • 一、定义Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。二、所需jar包:三、简单的一个读取excel的demo1、读取文件方法/*** 读取出filePath中的所有...
  • Java利用线程池技术批量导入数据到数据库 ***1. 第一个类WifiAndImsiImportTask.java定时任务中组装集合数据并提交多线程池执行:*** /** * wifiImsi数据入库 * @author xjl * 2018-11-6 13:34:27 * */ @...
  • java线程池批量导入数据 @Component public class WifiAndImsiImportTask { private final int INSERNUM = 50000;//每次添加的条数 private final String FILE_SEPARATOR = System.getProperty("file.separator");...
  • 传送门 Java 开发中如何用 POI 优雅的导出 Excel 文件, Java 开发中如何用 POI 优雅的导入 Excel 文件.场景分析大多数开发中是不需要重复的数据的, 所以后端开发中需要做去重操作, 而且为了更加友好的交互, 我们需要...
  • java+poi批量导入数据

    2019-08-08 17:33:32
    近期做了一个项目,需要导入,导出功能,现在做一下总结。 项目使用springboot+themleaf+layui技术。 pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</...
  • 主要为大家详细介绍了java实现批量导入Excel表格数据到数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了java使用POI批量导入excel数据的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java开发使用Excel批量导入数据

    千次阅读 2016-05-20 17:17:09
    Excel批量导入数据 1. 问题场景 考试系统开发中,类似考题、学生信息等,手动录入太繁杂,在excel当中编辑好再导入相对便捷,因此需要这样一个接口。 2. 实现方法 Dao层省略,只列出接口层和服务层处理逻辑: ...
  • 主要介绍了Java实现批量导入excel表格数据到数据库中的方法,结合实例形式详细分析了java导入Excel数据到数据库的具体步骤与相关操作技巧,需要的朋友可以参考下
  • 主要实现: 以学生信息为例,将Excel模板信息配置在XML文件中,...导入通过springmvc跳转路由后,读取文件流。对excel文件进行循环遍历,拿到数据后和模板规范匹配,匹配成功后调用插入服务,将数据插入数据库中,...
  • 传送门 Java 开发中如何用 POI 优雅的导出 Excel 文件, Java 开发中如何用 POI 优雅的导入 Excel 文件. 场景分析 大多数开发中是不需要重复的数据的, 所以后端开发中需要做去重操作, 而且为了更加友好的交互, 我们...
  • Java API实现向Hive批量导入数据

    万次阅读 2017-12-27 18:24:39
    Java程序中产生的数据,如果导入oracle或者mysql库,可以通过jdbc连接insert批量操作完成,但是当前版本的hive并不支持批量insert操作,因为需要先将结果数据写入hdfs文件,然后插入Hive表中。 package ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 815
精华内容 326
关键字:

java批量导入数据

java 订阅