oracle循环读取每一行,循环读取一个目录下文本文件数据存入oracle数据库

循环读取一个目录下文本文件数据存入oracle数据库

2011/12/8 8:10:52  ljjclub  http://ljjclub.iteye.com  我要评论(0)

摘要:虽说很简单,但俺刚开始思路绕了,以此记之publicstaticvoidsaveData()throwsException{doublebegin=System.currentTimeMillis();Connectionconn=null;//得到数据库连接PreparedStatementps=null;try{conn=DBUtil.getConnection();conn.setAutoCommit(false);//设置自动提交Stringdir="D:/dir/"

虽说很简单,但俺刚开始思路绕了,以此记之

public static void saveData() throws Exception {

double begin = System.currentTimeMillis();

Connection conn = null;// 得到数据库连接

PreparedStatement ps = null;

try {

conn = DBUtil.getConnection();

conn.setAutoCommit(false);// 设置自动提交

String dir = "D:/dir/";

File file = new File(dir);

if (file.isDirectory()) {

System.out.println("读取文件夹中文件信息");

int m = 0;

File[] listFiles = file.listFiles();

Map latHashMap = new HashMap();

Map t2HashMap = new HashMap();

Map lonHashMap = new HashMap();

for (File file2 : listFiles) {

// 把文件夹中所有的文件分类

String name = file2.getName();

if (name.contains("lat")) {

String substring = name.substring(3, name.length() - 4);

latHashMap.put(substring, file2);

} else if (name.contains("t2")) {

String substring = name.substring(2, name.length() - 4);

t2HashMap.put(substring, file2);

} else if (name.contains("lon")) {

String substring = name.substring(3, name.length() - 4);

lonHashMap.put(substring, file2);

}

}

// 操作文件,把同日期的不同文件内容填入到对应的数据库表的字段中

Set> latEntrySet = latHashMap.entrySet();

System.out.println("开始存入数据库");

String dataKey = null;

for (Entry entry : latEntrySet) {

dataKey = entry.getKey();

File latFile = entry.getValue();

File t2File = t2HashMap.get(dataKey);

File lonFile = lonHashMap.get(dataKey);

List Xlist = getData(latFile.getPath());

List Ylist = getData(lonFile.getPath());

List WDlist = getData(t2File.getPath());

for (int i = 0; i < (Xlist.size()); i++) {

m++;

ps = conn

.prepareStatement("insert into Test(id,sb,x,y,wd) values(Test_ID.nextval,?,?,?,?)");

ps.setString(1, dataKey);

ps.setObject(2, Xlist.get(i));

ps.setObject(3, Ylist.get(i));

ps.setObject(4, WDlist.get(i));

ps.addBatch();

ps.executeBatch();

ps.clearBatch();

ps.close();

}

conn.commit();

}

double end = System.currentTimeMillis();

System.out.println("导入数据表" + m + "条记录用时" + (end - begin)

+ "毫秒,平均存入每条记录用时" + ((end - begin) / m) + "毫秒");

}

} catch (Exception e) {

e.printStackTrace();

} finally {

conn.close();

}

}

// 读取文件并获得文件中数据(我这里是netCDF格式数据集文集)

public static List getData(String readPath) throws IOException {

File file = new File(readPath);

if (!file.exists()) {

System.out.println("File not exist!");

System.exit(0);

}

BufferedReader br;

br = new BufferedReader(new FileReader(readPath));

String line;

String[] strArr = null;

List list = new ArrayList();

Pattern p = Pattern.compile("^\\s*\\d.*");

if (file.exists()) {

int n = 1;

while ((line = br.readLine()) != null) {

n++;

if (p.matcher(line).matches()) {

strArr = line.replace(";","").trim().split(",");// 与文件中的分隔符要一致

for (String data : strArr) {

data.trim();

list.add(data);

}

}

}

}

br.close();

return list;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值