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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle interview

Oracle Applications General Questions How can you restrict the access (to oracle apps) to A GROUP OF users using personalization?How do you enable trace/debug in APPS?What are custom events in apps and how to you enable/disable it?What is diagnostics in…

ASP.Net Core Web API 如何返回 File。

咨询区 Jan Kruse&#xff1a;我想在 ASP.Net Web API 中返回 File 文件&#xff0c;我目前的做法是将 Action 返回值设为 HttpResponseMessage&#xff0c;参考代码如下&#xff1a;public async Task<HttpResponseMessage> DownloadAsync(string id) {var response ne…

python导包路径问题_python的导包问题

有事会遇到在python代码中导入包错误问题&#xff0c;本文简单对python包的引入做简单介绍 简单说,我认为python导包一共有3种情况,分别是: 要导的包与当前文件在同一层 要导的包在当前文件的底层(就是与当前文件夹同级的文件夹里) 要导的包在当前文件的上层 1、要导的包与当前…

垃圾代码还能出圈?手把手教你写垃圾代码,从入门到精通!

全世界只有3.14 % 的人关注了爆炸吧知识转自&#xff1a;机器之心参与&#xff1a;思如果说到什么是好代码&#xff0c;我们肯定都能说出一堆规则&#xff0c;例如使用一致的格式和缩进、使用清晰的变量名和方法名、在必要时提供文档与注释、不要过度精简代码等等。但是对于什么…

winform能连MySQL吗_c# winform中怎么连接mysql

匿名用户1级2018-11-19 回答static string myConnstr "serverip;user idroot; passwordpasswd;databasedb;poolingfalse;charsetgbk;";//System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls false;public static MySqlConnection GetMyConnection(){My…

User Experience Kit

User Experience Kit&#xff08;UEK&#xff09; 是微软官方发布的&#xff0c;集成了有关如何使用 Silverlight 3, Silverlight 4 实现有关媒体发布、数字化营销、以及使用 Silverlight 构建客户端的最新案例、白皮书以及部分源码。从这里下载 UEK 的概览. 网站地址&#xff…

java以Blob形式存储,读取图片并在jsp页面显示图片流

2019独角兽企业重金招聘Python工程师标准>>> 废话少说代码伺候&#xff1a; 封装好的ImageUtil类&#xff1a;目的读取本地的图片文件并存入数据库&#xff0c;然后读出数据库中以Blob形式存储的图片保存到指定目录。 1 package org.blog.util; 2 import java.io.F…

“ShardingCore”是如何针对分表下的分页进行优化的

首先还是要给自己的开原框架打个广告 sharding-core 针对efcore 2版本的分表组件&#xff0c;首先我们来快速回顾下目前市面上分表下针对分页常见的集中解决方案分表解决方案解决方案skip<100skip<10000skip>10000优点缺点内存分表速度快O(n)&#xff0c;nskip*分表数…

docker pull 私有_【赵强老师】管理Docker镜像

一、什么是Docker的镜像Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&#xff0c;相互之间不会有任何…

看着女朋友的肚子,以肉眼可见的速度大起来......

1 女生的肚子有多神奇▼2 你的论文除了导师真没人想要▼3 脑子&#xff1a;各部门注意&#xff01;这次一定可以&#xff01;手&#xff1a;&#xff1f;&#xff1f;&#xff1f;▼4 这孩子可能是高估了自己的大长腿▼5 到处说前男友死了算违法吗&#xff1f;▼6 男人妖…

《Android开发从零开始》——25.数据存储(4)

本节课的主要内容有&#xff1a;1.讲解Android中于I/O流有关的两个方法2.演示如何在Android中读写文件 课程下载地址&#xff1a;http://u.115.com/file/clc87txb课件及源码下载地址&#xff1a;http://u.115.com/file/aq8w11l7转载于:https://www.cnblogs.com/coolszy/archive…

添加CSS的四种方式

1、直接添加在HTML的标识符&#xff08;标签&#xff09;里&#xff1a; <p style"color: blue;font-size: 12pt">样式</p> 2、添加在HTML的头信息标识符<head>里&#xff1a; <head> <style type"text/css"> …… </sty…

违反GPL协议,法院判罚了!国内首例

整理 | 一君出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;近日&#xff0c;一起关于 GPL 版权纠纷案裁判文书公示。一审判决书显示&#xff0c;GPL3.0 协议是一种民事法律行为&#xff0c;具有合同性质&#xff0c;可认定为授权人与用户间订立的著作权…

开篇 — 【面向对象设计模式学习】

说明&#xff1a; 关于设计模式的文章网上已经很多了&#xff0c;本人也只是想参考别人的文章来系统地学习一下设计模式&#xff0c;因此&#xff0c;这个系列并不是一个系列教程&#xff0c;而仅仅是作为本人学习设计模式的一个学习笔记&#xff0c;此外&#xff0c;由于本人能…

python中random什么意思_python中的random

random.randint(a,b) 用于生成一个指定范围内的整数&#xff0c;a为下限&#xff0c;b为上限&#xff0c;生成的随机整数a<n<b;若ab&#xff0c;则na&#xff1b;若a>b&#xff0c;报错 import random random.randint(10,20)#输入18 random.randint(10,10)#输出10 ran…

魔方数算法

魔方数是什么,就是从1...x个自然数排列,每一行,每一列,对角线的和都相等的矩阵(方阵?). 我有一些想法,但是暂时还没有找到解决的灵活方案. 首先,每一行相当,那就是数列的总数Z/行数z (这个是行,列,对角线的统一和). 列的情况也类似Z/列数z 对角线的情况比较复杂,找不到规律.但…

又来了!深度学习PyTorch与TensorFlow到底哪家强?

全世界只有3.14 % 的人关注了爆炸吧知识自从2012年深度学习再一次声名鹊起以来&#xff0c;许多机器学习框架都争先恐后地要成为研究人员和行业从业者的新宠。面对如些众多的选择&#xff0c;人们很难判断最流行的框架到底是什么。在某些情况下&#xff0c;深度学习或深度迁移学…

mysql从多个表查询数据类型_MySQL 之 多表查询

阅读目录一.多表联合查询#创建部门CREATE TABLE IF NOT EXISTSdept (didint not null auto_increment PRIMARY KEY,dnameVARCHAR(50) not null COMMENT 部门名称)ENGINEINNODB DEFAULTcharset utf8;#添加部门数据INSERT INTO dept VALUES (1, 教学部);INSERT INTO dept VALUES …

注意指针修饰符的准确含义

首先从一起多线程无锁算法的事故说起,以下是一个无锁栈的实现测试,但在开-O2以上优化的情况下它却无法正常工作: #include "lf_stack.h" #include "kn_list.h" #include "kn_time.h" #include "kn_thread.h" #include "kn_atomic…

通过 GitExtensions 来使用 Git 子模块功能

通过 GitExtensions 来使用 Git 子模块功能目录一、前言二、Git 子模块三、子模块更改提交四、更新子模块五、[附] 去除最近的提交记录独立观察员 2021 年 9 月 5 日一、前言众所周知&#xff0c;编程&#xff0c;尤其是面向对象编程的一个重要思想就是 “封装”&#xff0c;可…