Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出...
我,谢谢您的关注.
我想使用Java将大量数据,实际上是大量数据(600万行)导出到.csv文件.该应用程序是使用toplink(ojdbc14)的JPA摆动应用程序.
我尝试使用:
但是BufferedWriter
RandomAccessFile的
FileChannel
等等,但是尽管我将最大堆大小设置为800m(-Xmx800m),但是内存消耗仍然很高,导致Java堆内存不足异常.
我的源代码的最新版本:
...(more lines of code)
FileChannel channel = getRandomAccessFile(tempFile).getChannel();
Object[][] data = pag.getRawData(); //Database data in a multidimentional array
for (int j = 0; j < data.length; j++) {
write(data[j], channel); //write data[j] (an array) into the channel
freeStringLine(data[j]); //data[j] is an array, this method sets all positions =null
data[j] = null;//sets reference in null
}
channel.force(false); //force writing in file system (HD)
channel.close(); //Close the channel
pag = null;
...(more lines of code)
private void write(Object[] row, FileChannel channel) throws DatabaseException {
if (byteBuff == null) {
byteBuff = ByteBuffer.allocateDirect(1024 * 1024);
}
for (int j = 0; j < row.length; j++) {
if (j < row.length - 1) {
if (row[j] != null) {
byteBuff.put(row[j].toString().getBytes());
}
byteBuff.put(SPLITER_BYTES);
} else {
if (row[j] != null) {
byteBuff.put(row[j].toString().getBytes());
}
}
}
byteBuff.put("
".toString().getBytes());
byteBuff.flip();
try {
channel.write(byteBuff);
} catch (IOException ex) {
throw new DatabaseException("Imposible escribir en archivo temporal de exportación : " + ex.getMessage(), ex.getCause());
}
byteBuff.clear();
}
作为600万行,我不想在创建文件时将该数据存储在内存中.我制作了许多临时文件(每个文件有5000行),最后,使用两个FileChannel将所有这些临时文件附加到一个文件中.但是,缺少内存的异常是在加入之前启动的.
您现在是否是导出大量数据的另一种策略?
非常感谢您的答复.对不起,我的英文,我正在提高xD
Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出...相关推荐
- java链接mysql输出查询_用java做网站,java连接数据库并查询输出到页面
java web的后缀名是jsp,所以咱们要有一个jsp的开发环境,我这用的是jspStudy 自行百度.这软件是一个集成开发环境,安装启动后即可使用,集成了tomcat和mysql数据库 首先我们先 ...
- Java将mysql输出csv,如何从Java中的Access数据库导出表并将其保存到.csv
I am trying to export a lot of large tables from a MS Access db with java using the jdbc:odbc bridge ...
- 超市管理系统java swing+mysql报告_基于java+swing+mysql的超市管理系统
运行环境:java jdk 1.8 IDE环境:Eclipse,Myeclipse,IDEA都可以 硬件环境:windows 7/8/10 2G内存以上(推荐4G,4G以上更好) 可以实现: 销售管理 ...
- Linux下MySQL数据库的备份与还原,mysql快速导入导出数据库实例演示,解决mysql大数据量数据库导出慢的问题
MySQL 数据库的备份与还原 第一章:数据库的导入与导出 ① 数据库的导出 ② 大数据量下 mysqldump 的导出优化 ③ 数据库的导出 第一章:数据库的导入与导出 ① 数据库的导出 需要用到 ...
- MySQL入门笔记(五):另存数据为文件(导出数据)
在select查询数据之后,要把结果数据保存到文件里,则需要另存数据为文件的操作,即导出数据 mysql> select user,host into outfile 'out.csv' fie ...
- java 异常堆栈输出_打印Java异常堆栈信息
背景 在开发Java应用程序的时候,遇到程序抛异常,我们通常会把抛异常时的运行时环境保存下来(写到日志文件或者在控制台中打印出来).这样方便后续定位问题. 需要记录的运行时环境包含两部分内容:抛异常时 ...
- java 匹配mysql按钮_使用Java在mysql查询中设置匹配函数
我有以下在java中查询(mysql)的摘录: queryGeral.append("FROM product p, fabricante_product fp, fabricante f, ...
- java创建mysql驱动,JDBC之Java连接mysql实现增删改查
使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...
- java毫秒 mysql秒_MySQL和Java时间毫秒之间的转换问题的总结
在做关于依时间查询用户认证的业务,因为在MySQL中,time字段使用的是bigint类型,所以存在其中都是毫秒数.当需要从数据库中取出 最近几天在做关于依时间查询用户认证的业务,因为在MySQL中, ...
最新文章
- 爬取王垠的博客并生成pdf
- 根据经纬度计算范围_遗传算法可视化项目(插曲):关于距离的计算
- linux sort -w32,WIN32汇编: 31.列表视图控件
- 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----自定义攻击篇
- 2016 排行前20 的编程语言
- 11下滑半个屏幕_努比亚发布手表手机:柔性屏幕,体积感人
- springmvc与struts2的区别
- 运维(2班)梁瑞第五次作业
- wordpress标签或者固定地址中文404错误解决插件
- svd奇异值分解_Lecture 28 | 奇异值分解
- 第6次结对作业--郑锦伟古维城
- 关于汉王 唐人笔手写板 打开后间歇性手写程序闪退以及屏幕锁屏或者关闭后手写板自动usb拔出问题
- linux系统下字体目录,Linux CentOS 7 安装字体库 中文字体
- 【厚积薄发】如何优化WaitForGPU?
- 如何才能成为一名优秀的设计师?
- 单片机反相器_TTL反相器的基本电路
- [Go] String型常用操作
- 2009年网络游戏排行榜
- 股票自动委托下单html,股票怎么设置自动挂单?股票交易挂单规则
- K8S 故障处理经验积累(网络)
热门文章
- .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 )...
- Newbe.Claptrap - 一套以 “事件溯源” 和“Actor 模式”作为基本理论的服务端开发框架...
- .NET Core 2.2 新增部分功能使用尝鲜
- 【活动(广州)】MonkeyFest2018 微软最有价值专家讲座
- 《.NET Core 2.0 应用程序高级调试》7折优惠
- 使用 C# (.NET Core) 实现模板方法模式 (Template Method Pattern)
- 在ASP.NET Core中使用AOP来简化缓存操作
- asp.net core MVC 过滤器之ActionFilter过滤器(二)
- django08: 视图与路由(旧笔记)
- Linux的scan命令,linux的scan命令