从oracle数据库导出到csv文件

时间:2015-05-07 15:01:47

标签: java oracle csv timestamp

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

public static void main(String[] args) {
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","sandp");
conn.setAutoCommit(false);
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from tet where to_char(S_DATE,'HH24') = '23'");

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())
{
System.out.print(rs.getString(1));
bwOutFile.append(rs.getString(1));
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);
}

}


}

这里我将数据输入asd.csv文件,如下所示= 2015-2-26.23.21。 0 0

2015-2-26.23.43。 0 0

2015-2-27.23.28。 0 0

2015-2-27.23.50。 0 0

2015-3-1.23.19。 0 0

2015-3-1.23.41。 0 0

但我希望获得以下格式=的数据 2015-02-26 23:21

2015-02-26 23:43

2015-02-27 23:28

2015-02-27 23:50

2015-03-01 23:19

2015-03-01 23:41

我在输出中得到一个额外的点(“。”)...我做错了什么? 我创建了一个名为tet with coloumn(S_DATE)的表,其中S_DATE是时间戳...任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

使用rs.getTimestamp()而不是rs.getString()并使用SimpleDateFormat将时间戳转换为字符串。

TimeStamp ts= rs.getTimeStamp(1);
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm");
String yourFormatedDate = formater.format(ts);