从数据库信息模式中检索元数据
如果数据当前存储在数据库中,您可以从信息架构中检索列类型。您需要做的就是在查询表后检索此信息并将其存储,以便以后可以重用。
// connect to DB as usual
Statement stmt = conn.createStatement();
// create your query
// Note that you can use a dummy query here.
//You only need to access the metadata schema of the table, regardless of the actual query.
ResultSet rse = stmt.executeQuery("Select A,B FROM table WHERE ..");
// get the ResultSetMetadata
ResultSetMetaData rsmd = rse.getMetaData();
// Get database specific type
rsmd.getColumnTypeName(1); // database specific type name for column 1 (e.g. VARCHAR)
rsmd.getColumnTypeName(2); // database specific type name for column 2 (e.g. DateTime)
....
// Get generic JDBC type http://docs.oracle.com/javase/7/docs/api/java/sql/Types.html
rsmd.getColumnType(1) // generic type for col 1 (e.g. 12)
rsmd.getColumnType(2) // generic type for col 2
加工
您可以将此信息存储在CSV 模式中,并在转换过程中进行处理。我建议您使用SuperCSV,可在此处获得。这个库提供了所谓的单元处理器,它允许您定义列的类型。
描述:
单元处理器是使用 Super CSV 进行读写的一个组成部分——它们自动进行数据类型转换,并强制执行约束。它们实现了责任链设计模式——每个处理器都有一个明确定义的目的,并且可以与其他处理器链接在一起,以完全自动化单个 CSV 列所需的所有转换和约束验证。