繁体   English   中英

使用OpenCSV和Resultset将Oracle表导出为CSV

[英]Export Oracle table to CSV using OpenCSV and Resultset

我正在尝试将oracle表导出到csv文件中,并且这样做已经创建了一个Class,但是输出文件格式如下:

12345 1002988846 1工资在这里67891 1009007305 0 Ma3ash在这里! 55555 1095003139 0 Ma3ash在这里! 77777 1023456789 1工资在这里

这是课程:

import java.io.*;
import java.sql.*;
public class newway {

public void  mymethod() throws Exception {
try
{
Class.forName("oracle.jdbc.OracleDriver");

Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@172.17.60.225:1521/FRSTEST", "TRASSET", "TRASSET");
conn.setAutoCommit(false);
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("Select * from Table1");


ResultSetMetaData rsmd = rs.getMetaData();
FileWriter cname = new FileWriter("D:\\asd.csv");
BufferedWriter bwOutFile = new BufferedWriter(cname);
StringBuffer sbOutput = new StringBuffer();
sbOutput.append("S_DATE");
bwOutFile.append(sbOutput);
bwOutFile.append(System.getProperty("line.separator"));
System.out.println("No of columns in the table:"+ rsmd.getColumnCount());

for (int i = 1; i <= rsmd.getColumnCount(); i++) 
{
String  fname = rsmd.getColumnName(i);
}

System.out.println();



while(rs.next())
{
for(int i=1; i<5;i++){  
System.out.print(rs.getString(i));
bwOutFile.append(rs.getString(i));
bwOutFile.append(System.getProperty("line.separator"));
}
bwOutFile.flush();
System.out.println();
} 
conn.close();

}
catch(SQLException se)
{
se.printStackTrace();
}
catch(Exception e)
    {
System.out.println("Unable to connect to database" +e);
}

}


}

我希望输出用逗号和一行中的每个记录分隔。 有任何帮助吗?

您在哪里使用openCSV?

这是openCSV中CSVWriter的一项测试,用于测试从ResultSet中写入记录。 只需对其进行修改即可满足您的需求。

@Test
public void testResultSetWithHeaders() throws SQLException, IOException {
  String[] header = {"Foo", "Bar", "baz"};
  String[] value = {"v1", "v2", "v3"};

  StringWriter sw = new StringWriter();
  CSVWriter csvw = new CSVWriter(sw);
  csvw.setResultService(new ResultSetHelperService());

  ResultSet rs = MockResultSetBuilder.buildResultSet(header, value, 1);

  int linesWritten = csvw.writeAll(rs, true); // don't need a result set since I am mocking the result.
  assertFalse(csvw.checkError());
  String result = sw.toString();

  assertNotNull(result);
  assertEquals("\"Foo\",\"Bar\",\"baz\"\n\"v1\",\"v2\",\"v3\"\n", result);
  assertEquals(2, linesWritten);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM