日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出...

發(fā)布時間:2023/12/4 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我,謝謝您的關注.

我想使用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萬行,我不想在創(chuàng)建文件時將該數據存儲在內存中.我制作了許多臨時文件(每個文件有5000行),最后,使用兩個FileChannel將所有這些臨時文件附加到一個文件中.但是,缺少內存的異常是在加入之前啟動的.

您現(xiàn)在是否是導出大量數據的另一種策略?

非常感謝您的答復.對不起,我的英文,我正在提高xD

總結

以上是生活随笔為你收集整理的Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。