java批量写文件_Java大批量数据写文件

首先说一下这个大批量,是指有上千万的数据量。

例子:

有一张短信历史表,其数据有上千万条数据,要进行数据备份到文本文件,就是执行如下SQL然后将结果集写入到文件中!

select

t.msisdn,t.source,t.seq,t.area,t.send_date,t.msg,t.optcode from

hnsms.SMS_SEND_10086_HIS_102 t

数据库:Oracle

下面主要列一下我写文件操作的不同实现方法,及运行结果:

第一种:-----------------------------------------------------------------------------

package wap.ftp;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import wap.util.PublicUtil;

public class FileWriteTest {

private Connection conn_a = null;

private PreparedStatement pstmt_a = null;

private ResultSet rs_a = null;

private String FilePath = "";

private File fileName = null;

private FileWriter writer;

private PrintWriter pw;

private String fileAllPath = "";

Map map = new HashMap();

public void init(){

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

map = PublicUtil.readConfigFile();

conn_a =

DriverManager.getConnection((String)map.get("URL"),(String)map.get("USERNAME"),(String)map.get("PASSWORD"));

FilePath = PublicUtil.readServerPath();

} catch (Exception e)

{

e.printStackTrace();

}

}

public void  readDataToFile(){

long totalStart = System.currentTimeMillis();

init();

try {

Date date = new

Date();

SimpleDateFormat sdf =

new SimpleDateFormat("yyyyMMdd");

//SimpleDateFormat sdf2 =

new SimpleDateFormat("yyyy/MM/dd HH:mm");

String nowDateStr =

sdf.format(date);

fileAllPath

= FilePath+nowDateStr+".txt";

fileName = new

File(fileAllPath);

try {

writer = new FileWriter(fileAllPath);

pw=new PrintWriter(writer);

} catch (IOException e) {

e.printStackTrace();

}

//createFile("");

//读配置文件--取SQL

String sql_a= (String)map.get("SQL");

System.out.println(sql_a);

pstmt_a =

conn_a.prepareStatement(sql_a);

rs_a = pstmt_a.executeQuery();

int num = 0;

//记录写文件写了多少行

while(rs_a.next()){

long startTime =

System.currentTimeMillis();

String size = (String)map.ge

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值