java - 使用java将时间戳从mysql解析为csv

标签 java mysql csv

我有一个 mysql 数据库,并且有一个表,其中有许多列,其中包括时间戳列。我想读取该表并将其写入 csv 文件。然后我将从 csv 文件中读取数据并将其插入到另一个数据库和表中。这些都是通过java来完成的。 我可以从第一个数据库读取表日期和时间戳,但时间戳未正确写入 csv 文件中。仅写入最后几位数字。例如,如果我有一个时间戳 2012-11-01 02:18:00.0 只有 18:00.0 才会写入 csv。所有其他东西都工作正常。例如,如果我硬写时间戳,我可以将其写入第二个数据库。这是读取 mysql 并写入 csv 的代码:

                    con = DriverManager.getConnection("jdbc:mysql://localhost/campdb", "...", "...");

                    stmt = (Statement) con.createStatement();
                    fw = new FileWriter(filename);
                    PrintWriter a = new PrintWriter(fw);
                    ResultSet res = stmt.executeQuery("SELECT * FROM CAMPREQ;");
                    while (res.next()) 
                    {
                        String ID = res.getString(1);
                        java.sql.Date date = res.getDate(2);
                        //java.util.Date jdate = new java.util.Date(date.getTime());
                        String company = res.getString(3);
                        String time = res.getString(4);
                        String origin = res.getString(5);
                        String dest = res.getString(6);
                        String timestamp = res.getString(7);
                        System.out.println(timestamp);
                        a.print(ID);
                        a.print(',');
                        a.print(date);
                        a.print(',');
                        a.print(company);
                        a.print(',');
                        a.print(time);
                        a.print(',');
                        a.print(origin);
                        a.print(',');
                        a.print(dest);
                        a.print(',');
                        a.print(timestamp);
                        a.print('\n');
                        a.flush();

                    }

System.out 命令按应写入的方式打印时间戳,但在 csv 中写入不正确:( 谢谢

最佳答案

尝试使用下面的代码,它适用于大多数数据库,并以正确的格式正确地正确获取所有数据类型。这不仅可以解决 mysql 的问题,还可以解决任何其他数据库的问题

 public static StringBuffer resultSetToStringCsv(ResultSet resultSet) throws Exception{
StringBuffer stringwriter = new StringBuffer();

ResultSet rs = resultSet;
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();

//Write column names
for(int i=1;i<=numberOfColumns;i++){
 stringwriter.append(rsmd.getColumnName(i));
 stringwriter.append(',');
}
stringwriter.append('\n');
//Write rows
while(rs.next()){
 for(int i=1;i<=numberOfColumns;i++){
  try{
   stringwriter.append(""+rs.getObject(i));
  stringwriter.append(',');
  }catch (Exception e) {
   stringwriter.append("null");
 stringwriter.append(',');
}
}    
 stringwriter.append('\n');
}

您可以查看http://bmukorera.blogspot.com/2012/11/resultset-query-to-string-generating.html完整代码

关于java - 使用java将时间戳从mysql解析为csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170384/

相关文章:

java - 使用不带注释的@JsonIdentityInfo

java - 使用枚举列表作为参数的 IN 关键字的 Spring Data 查询方法

java - 在 Jetty 上运行 Jersey Servlet - 错误 : The ResourceConfig instance does not contain any root resource classes

MySQL Enum 总是包含 '' (空字符串)的可能性

r - 尝试在 R 中合并多个 csv 文件

具有下界(超)类型的 Java 方法

mysql - 如何解决这个跨线程错误?

java - Apache Ignite JDBC 和具有第 3 方持久性的后写缓存策略

c# - 各地区的数制问题

python - 如何使用 python/BeautifulSoup 或类似工具将 kml 文件解析为 csv?