Java 将SqlRowSet导出到文件
我想将通过JDBC触发的SQL查询的结果导出到一个文件中;然后在以后的某个时候导入该结果 我目前正在通过Java 将SqlRowSet导出到文件,java,spring,jdbc,design-patterns,refactoring,Java,Spring,Jdbc,Design Patterns,Refactoring,我想将通过JDBC触发的SQL查询的结果导出到一个文件中;然后在以后的某个时候导入该结果 我目前正在通过Spring的NamedParameterJdbcTemplate查询数据库,它返回一个我可以迭代的SqlRowSet。在每次迭代中,我提取所需的字段,并使用PrintWriter将结果转储到CSV文件中 final SqlRowSet rs = namedJdbcTemplate.queryForRowSet(sql,params); while (rs.next()) { 问题是,当我读
Spring
的NamedParameterJdbcTemplate
查询数据库,它返回一个我可以迭代的SqlRowSet
。在每次迭代中,我提取所需的字段,并使用PrintWriter
将结果转储到CSV
文件中
final SqlRowSet rs = namedJdbcTemplate.queryForRowSet(sql,params);
while (rs.next()) {
问题是,当我读回文件时,它们都是String
s,我需要将它们转换为正确的类型,例如Integer
、String
、Date
等
while (line != null) {
String[] csvLine = line.split(";");
Object[] params = new Object[14];
params[0] = csvLine[0];
params[1] = csvLine[1];
params[2] = Integer.parseInt(csvLine[2]);
params[3] = csvLine[3];
params[4] = csvLine[4];
params[5] = Integer.parseInt(csvLine[5]);
params[6] = Integer.parseInt(csvLine[6]);
params[7] = Long.parseLong(csvLine[7]);
params[8] = formatter.parse(csvLine[8]);
params[9] = Integer.parseInt(csvLine[9]);
params[10] = Double.parseDouble(csvLine[10]);
params[11] = Double.parseDouble(csvLine[11]);
params[12] = Double.parseDouble(csvLine[12]);
params[13] = Double.parseDouble(csvLine[13]);
batchParams.add(params);
line = reader.readLine();
}
是否有更好的方法将此
SqlRowSet
导出到文件中,以便于以后的导入过程;存储模式以便更容易地插入数据库的某种方法?如果需要解析,一种处理方法是
Factory
接口,比如ParserFactory
MyParser
Pattern
实现MyParser
,即IntegerParser实现MyParser
等List<String> headerRow = reader.readLine().split(";"); // Get the 1st row here
Map<String, MyParser> parsers = new HashMap<>();
for(int i = 0; i < headerRow.length(); i++) {
if(!parser.containsKey(headerRow[i]))
parsers.put(headerRow[i], ParserFactory.get(headerRow[i]));
}
line = reader.readLine();
while (line != null) { // From 2nd row onwards
String[] row = line.split(";");
Object[] params = new Object[row.length()];
for(int i = 0; i<row.length(); i++) {
params[i] = parser.get(headerRow[i]).parse(row[i]);
}
batchParams.add(params);
line = reader.readLine();
}
如果解析是你关心的问题,一种处理方法是
Factory
接口,比如ParserFactory
MyParser
Pattern
实现MyParser
,即IntegerParser实现MyParser
等List<String> headerRow = reader.readLine().split(";"); // Get the 1st row here
Map<String, MyParser> parsers = new HashMap<>();
for(int i = 0; i < headerRow.length(); i++) {
if(!parser.containsKey(headerRow[i]))
parsers.put(headerRow[i], ParserFactory.get(headerRow[i]));
}
line = reader.readLine();
while (line != null) { // From 2nd row onwards
String[] row = line.split(";");
Object[] params = new Object[row.length()];
for(int i = 0; i<row.length(); i++) {
params[i] = parser.get(headerRow[i]).parse(row[i]);
}
batchParams.add(params);
line = reader.readLine();
}