質問の結果をCSVファイルに出力したい。問題は、ユーザーがアプリケーションからクエリを書くことができるため、クエリが毎回変更される(SELECT操作のみが利用可能な場合でも)。CSVにディナミックSQLクエリを保存しますか?
どのように私はResultSet
からデータを抽出してCSVで印刷できますか?
質問の結果をCSVファイルに出力したい。問題は、ユーザーがアプリケーションからクエリを書くことができるため、クエリが毎回変更される(SELECT操作のみが利用可能な場合でも)。CSVにディナミックSQLクエリを保存しますか?
どのように私はResultSet
からデータを抽出してCSVで印刷できますか?
がOK iは異なるアプローチで試み:
PrintWriter csvWriter = new PrintWriter(new File(path + "SqlClient_" + date + ".csv")) ;
ResultSetMetaData meta = rs.getMetaData() ;
int numberOfColumns = meta.getColumnCount() ;
String dataHeaders = "\"" + meta.getColumnName(1) + "\"" ;
for (int i = 2 ; i < numberOfColumns + 1 ; i ++) {
dataHeaders += ",\"" + meta.getColumnName(i) + "\"" ;
}
csvWriter.println(dataHeaders) ;
while (rs.next()) {
String row = "\"" + rs.getString(1) + "\"" ;
for (int i = 2 ; i < numberOfColumns + 1 ; i ++) {
row += ",\"" + rs.getString(i) + "\"" ;
}
csvWriter.println(row) ;
}
csvWriter.close();
行全体が単一の列に置かれるので、行が分割されていないので、ここで行は列良い印刷なくれます。
univocity-parsersでこれを簡単に行うことができます。あなただけのユーザの入力クエリからResultSet
を取得し、これを実行する必要があります。
CsvRoutines routines = new CsvRoutines();
routines.write(resultset, new File(path + "SqlClient_" + date + ".csv"), "UTF-8");
write()メソッドは、すべての世話をします。 resultset
と出力ファイルはルーチンによって自動的に閉じられます。
あなたが特定の列または(日付など)のタイプの出力をフォーマットしたい場合は、例えば、ObjectRowWriterProcessor
を設定することができます。
ObjectRowWriterProcessor processor = new ObjectRowWriterProcessor();
//assigns a "global" date format conversion for any Timestamp that gets written.
processor.convertType(java.sql.Timestamp.class, Conversions.toDate("dd/MM/yyyy HH:mm"));
//you can also define field-specific conversions, which will override the default setting for timestamps defined above.
processor.convertFields(Conversions.toDate("dd/MM/yy")).set("created_date", "updated_date");
processor.convertFields(Conversions.trim(), Conversions.toLowerCase()).set("name", "city", "etc");
CsvWriterSettings writerSettings = new CsvWriterSettings();
writerSettings.setRowWriterProcessor(processor);
CsvRoutines routines = new CsvRoutines(writerSettings);
routines.write(rs, outputWriter);
ホープこれは私が上の結果保存しようとした
役立ちますVector>しかし、各行はオブジェクトではなく情報を出力するので、良い解決策ではありません。 –
Removed
ArrayListを使用しようとする –
Jobin