「java批量写入」java批量写入clickhouse
今天给各位分享java批量写入的知识,其中也会对java批量写入clickhouse进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
javalist批量写入数据库长度超了
原因:mybatis批量插入是有长度限制
解决办法:将大的list分批来批量插入,代码如下:
JAVA怎么向Excel中写入批量数据?
public static void drawExcel(HSSFWorkbook wb, String sheetName, String title, int n, List exlList, int[] index){\x0d\x0aList exList =(List)exlList;\x0d\x0aint len = exList.get(0).length;\x0d\x0a// 创建一个sheet表单\x0d\x0aHSSFSheet sheet = wb.createSheet(sheetName);\x0d\x0aRegion region = null;\x0d\x0a//样式\x0d\x0aHSSFCellStyle cellStyle1 = setStyleBorder(wb);\x0d\x0aHSSFCellStyle cellStyle2 = setStyleFontBorder(wb);\x0d\x0a// 创建标题行\x0d\x0aHSSFRow row = sheet.createRow(0);\x0d\x0arow.setHeight((short)500);\x0d\x0a// 创建单元格\x0d\x0aHSSFCell cell = null;\x0d\x0aif(title != null !"".equals(title)){\x0d\x0aregion = new Region(0, (short)0, 0, (short)(len- 1));\x0d\x0asheet.addMergedRegion(region);\x0d\x0a\x0d\x0acell = row.createCell(0);\x0d\x0a// 标题写入单元格\x0d\x0acell.setCellValue(title);\x0d\x0a cell.setCellStyle(setStyleFontSize(wb, 18));\x0d\x0a}else{\x0d\x0an = n - 1;\x0d\x0a}\x0d\x0a\x0d\x0a NumberFormat formatter = NumberFormat.getNumberInstance();\x0d\x0a formatter.setMaximumFractionDigits(8);\x0d\x0a//合计信息\x0d\x0aDouble[] sum = new Double[len];\x0d\x0aObject[] s = null;\x0d\x0afor(int i = 0; i s = exList.get(i);\x0d\x0arow = sheet.createRow(i + n);\x0d\x0a// 创建数据行\x0d\x0afor(int j = 0; j cell = row.createCell(j);\x0d\x0a/***\x0d\x0a* jobin create\x0d\x0a*/\x0d\x0aif(s[j] instanceof Integer || s[j] instanceof Float){\x0d\x0acell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);\x0d\x0a}else{\x0d\x0acell.setCellType(HSSFCell.CELL_TYPE_STRING);\x0d\x0a}\x0d\x0aif(!StringUtils.isNotEmpty(s[j])){\x0d\x0acell.setCellStyle(cellStyle1);\x0d\x0acontinue;\x0d\x0a}\x0d\x0aString[] rs = null;\x0d\x0aint l = 3000;\x0d\x0aif(i == 0 s[j].toString().indexOf(",") 0){\x0d\x0ars = s[j].toString().split(",");\x0d\x0acell.setCellValue(rs[0]);\x0d\x0al = Integer.parseInt(rs[1]);\x0d\x0a}else{\x0d\x0acell.setCellValue(s[j].toString());\x0d\x0a}\x0d\x0aif(i == 0){\x0d\x0acell.setCellStyle(cellStyle2);\x0d\x0a//设置列宽\x0d\x0a//if(j == 0){\x0d\x0a sheet.setColumnWidth(j, l);\x0d\x0a//}else if(j == s.length -1){\x0d\x0a// sheet.setColumnWidth(j, 5000);\x0d\x0a//}else{\x0d\x0a// sheet.setColumnWidth(j, 3000);\x0d\x0a//}\x0d\x0a}else{\x0d\x0acell.setCellStyle(cellStyle1);\x0d\x0a//合计统计\x0d\x0aif(index != null){\x0d\x0afor(int in : index){\x0d\x0aif(in == j){\x0d\x0aif(sum[in] == null) sum[in] = 0.0;\x0d\x0asum[in] += Double.parseDouble(s[j].toString());\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a//合计信息\x0d\x0aif(index != null){\x0d\x0aregion = new Region(exList.size() + 1, (short)0, exList.size() + 1, (short)(index[0]-1));\x0d\x0asheet.addMergedRegion(region);\x0d\x0arow = sheet.createRow(exList.size() + n);\x0d\x0afor(int i = 0; i cell = row.createCell(i);\x0d\x0acell.setCellStyle(cellStyle2);\x0d\x0aif(i == 0){\x0d\x0acell.setCellValue("合计");\x0d\x0a}else if(sum[i] != null){\x0d\x0acell.setCellValue(formatter.format(sum[i]).replace(",", ""));\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a}\x0d\x0a核心代码,我项目上使用的
java 如何批量插入数据
通过jdbc就可以执行批量插入了。
以下案例:
1、逐条执行10万次
2、分批执行将10万分成m批,每批n条,分多种分批方案来执行。
/**
* 批处理执行
*
* @param m 批次
* @param n 每批数量
* @throws Exception 异常时抛出
*/
public static void testInsertBatch(int m, int n) throws Exception {
init(); //初始化环境
Long start = System.currentTimeMillis();
for (int i = 0; i m; i++) {
//从池中获取连接
Connection conn = myBroker.getConnection();
Statement stmt = conn.createStatement();
for (int k = 0; k n; k++) {
String sql = "\n" +
"insert into testdb.tuser \n" +
"\t(name, \n" +
"\tremark, \n" +
"\tcreatetime, \n" +
"\tupdatetime\n" +
"\t)\n" +
"\tvalues\n" +
"\t('" + RandomToolkit.generateString(12) + "', \n" +
"\t'" + RandomToolkit.generateString(24) + "', \n" +
"\tnow(), \n" +
"\tnow()\n" +
")";
//加入批处理
stmt.addBatch(sql);
}
stmt.executeBatch(); //执行批处理
stmt.close();
myBroker.freeConnection(conn); //连接归池
}
Long end = System.currentTimeMillis();
System.out.println("批量执行" + m + "*" + n + "=" + m * n + "条Insert操作,共耗时:" + (end - start) / 1000f + "秒!");
}
关于java批量写入和java批量写入clickhouse的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。