JSR*_*JSR 2 java csv resultset
您好我试图将oracle jdbc结果集转换为csv文件.以下是使用的代码.如果字段中存在如下值,则会出现问题.它会使输出csv变形,所有这些都在单独的行而不是在一个字段中.
Field中的值以csv为单位
[<333message:脚本中的运行时错误'ProcessItem:'Type:'ITEM'"1:0).内部脚本错误:java.lang.NullPointerException
脚本(第1行):
setHours = 0;
if(ts.instanceId == null) )
"3:ts.instanceId = 0;"
步骤>]
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++;
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*obi 14
你在使用"java.sql.ResultSet"类吗?如果是,请参阅此链接中的库http://opencsv.sourceforge.net/
看一个例子:
CSVWriter csvWriter = new CSVWriter(new FileWriter("yourfile.csv"), '\t');
java.sql.ResultSet myResultSet = .... ;
csvWriter.writeAll(myResultSet, includeHeaders);
Run Code Online (Sandbox Code Playgroud)
获取可能包含新行的列的值,如下所示
String multiLine = null;
if (k == <col_index> && (mutiLine = rs.getString(k)) != null)
out.append(multiLine.replaceAll("\\n", ""));
else
out.append(result.getString(k));
Run Code Online (Sandbox Code Playgroud)
您也可以过滤所有列,但这会导致性能受到一些影响。
归档时间: |
|
查看次数: |
28225 次 |
最近记录: |