【发布时间】:2011-11-15 07:23:54
【问题描述】:
我需要非常快地将许多 sql 行插入到 oracle 数据库中。 IndexData 是包含保存方法的类,可以插入到 oracle 数据库中。
while ((line = in.readLine()) != null) {
if(line.contains("numDocs")) {
numDocs = in.readLine().trim();
//For Inserting
IndexData id = new IndexData(timeStamp, 1, 2, numcDocs);
id.save();
} else if(line.contains("indexSize")) {
indexSize = in.readLine().trim();
//For Inserting
IndexData id = new IndexData(timeStamp, 1, 3, indexSize);
id.save();
} else if(line.contains("indexReplicatedAt")) {
replicationTime = in.readLine().trim();
//For Inserting
IndexData id = new IndexData(timeStamp, 1, 4, replicationTime );
id.save();
}
}
BufferedReader inUrl = new BufferedReader (new InputStreamReader (isUrl));
String lineUrl;
Pattern regex = Pattern.compile("<str name=\"status\">(.*?)</str>");
while ((lineUrl = inUrl.readLine()) != null) {
if(lineUrl.contains("str name=\"status\"")) {
Matcher regexMatcher = regex.matcher(lineUrl);
if (regexMatcher.find()) {
status = regexMatcher.group(1);
//For Inserting
IndexData id = new IndexData(timeStamp, 1, 5, status);
id.save();
}
}
}
这是我的 IndexData 类-
public IndexData(String timestamp, String serveId, String informationId, String value ) {
this.timestamp=timestamp;
this.serverId=serverId;
this.informationId=informationId;
this.value=value;
}
//For Inserting
public void save() throws SQLException {
ps = DataSource.conn.prepareStatement (
"INSERT INTO table(timestamp, serverId, informationId, value) VALUES(?,?,?,?)");
ps.setString (1, timestamp);
ps.setString (2, serverId);
ps.setString (3, informationId);
ps.setString (4, value);
ps.executeUpdate();
ps.close ();
}
这是插入具有多个用于插入的多个 sql 语句的 oracle 数据库的最佳方法吗?因为我一次又一次地打开 IndexData 类,以便为每个信息只插入一行到 DB 中。有没有比这更快的方法。任何建议将不胜感激..
【问题讨论】:
-
“许多”是多少?阻碍?数千?百万?