2016-12-12 12 views
0

クエリテーブルの結果をCSVファイルに出力したいとします。Java:異なる列にcsvを出力しますか?

私はこのコードを使用してみました:

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(); 

これは私が得るものです:

title1","title2","title3" 
"date1","date2","date3" 
.... 

これは、代わりに私は、別の列にのようなものを書きたい、単一の列の内側に記述します:

title1 | title2 | title3 
data1| data2 | data3 | 

文字列を別の列に分割する特別なコマンドがありますか?

+0

私が正しくあなたを理解していれば、あなたは文字 'で区切られた列をしたい|' "" 代わりに 'の'? –

+0

Ehm no xD xDキャラクター|私は別の列であることを意味します。 – Removed

+0

あなたのことを理解していれば、あなたのCSVファイルは次のようになります:タイトル1(1列)、タイトル2(別の列)など? –

答えて

-1

私はあなたがそれはあなたのためのより適切と思われるものに次の行を変更することができると信じている:

row += ",\"" + rs.getString(i) + "\""; 
+0

投稿したコードと同じではありませんか? – Removed

+0

はい、私は、rs.getString(i)の間の値を変更して、何でもしたいと言ったと言っただけです。 – Galeixo

+0

はい、私は、rs.getString(i)の間の値を変更して、何でもしたいことを伝えました。 – Galeixo

0

CSVファイルに列を分離するために区切り文字を使用するので、私はあなたのことを推測しています区切り文字は,(カンマ)になります。

あなたがすべきことは、ヘッダの値をコンマで区切って表示し、新しいカラムを作成するために新しい行区切り文字(\n)を追加することです。行の値と同じです。

詳細については、exampleを参照してください。

1

なぜStringBuilderを使用しないでください。データベースコールからYourClass型のリストを含む結果セットを取得するとします。次のユーティリティを呼び出し、ライターに渡します。

擬似コード:

public void writeToCSV(FileWriter writer){ 

StringBuilder sb=new StringBuilder(); 
for (YourClass data: yourresultSet){ 

sb.append("\""); 
sb.append(data.getColumn1); 
sb.append"\""; 
sb.append(",\"") 
sb.append(data.getColumn2); 
sb.append("\""); 
sb.append('\n'); //new line after the column 

writer.write(sb.toString()); 
sb.delete(0,sb.length()); 

} 

} 

そして、あなたの結果をテストするための

public class ReadCSV{ 

public static void main(String[] args) { 

    String csvFile = "your.csv"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = ","; 

    try { 

     br = new BufferedReader(new FileReader(csvFile)); 
     while ((line = br.readLine()) != null) { 

      // use comma as separator 
      String[] title= line.split(cvsSplitBy); 

      System.out.println("Columns [Column1= " + title[0] + " , Column2=" + title[1] + "]"); 

     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      try { 
       br.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

} 
} 
関連する問題