使用Java将结果集转换为CSV文件 [英] Convert Resultset to CSV file using Java
问题描述
我正在尝试将oracle jdbc结果集转换为csv文件.下面是使用的代码.当字段中具有如下所示的值时,就会发生问题.它会使输出的csv变形,所有这些都放在单独的行而不是一个字段中.
Hi I am trying to convert oracle jdbc resultset to csv file. Below is the code used. Issue occures when there is value like below in the field. It deforms the output csv and all this come in separate line rather than in one field.
字段中的值以
[< 333message:脚本中的运行时错误'ProcessItem:'类型:'ITEM'"1:0).内部脚本错误:java.lang.NullPointerException
脚本(第1行):
setHours = 0;
if(ts.instanceId == null)
"3:ts.instanceId = 0;"
步骤>]
[<333message:Runtime error in script' ProcessItem: ' Type: 'ITEM'" 1:0).Internal Script error: java.lang.NullPointerException
Script (line 1):
setHours = 0 ;
if(ts.instanceId == null)
" 3 : ts.instanceId = 0 ;"
Step >]
int ncols = result.getMetaData().getColumnCount();
System.out.println("ColumnCout"+ncols);
FileOutputStream fos=new FileOutputStream(new File("C:\\test.csv"),false);
Writer out = new OutputStreamWriter(new BufferedOutputStream(fos),"UTF_8");
for (int j=1; j<(ncols+1); j++) {
out.append(result.getMetaData().getColumnName (j));
if (j<ncols) out.append(","); else out.append("\r\n");
}
int m =1;
while (result.next()) {
for (int k=1; k<(ncols+1); k++) {
out.append(result.getString(k));
if (k<ncols) out.append(","); else out.append("\r\n");
}
//System.out.println("No of rows"+m);
m++;
}
推荐答案
获取可能具有换行为
String multiLine = null;
if (k == <col_index> && (mutiLine = rs.getString(k)) != null)
out.append(multiLine.replaceAll("\\n", ""));
else
out.append(result.getString(k));
您也可以过滤所有列,但会导致性能下降.
You could filter all the columns as well but then would incur some performance hit.
这篇关于使用Java将结果集转换为CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!