5

こんにちは、Oracle jdbc 結果セットを csv ファイルに変換しようとしています。以下は使用したコードです。フィールドに以下のような値がある場合に問題が発生します。出力csvを変形し、これらすべてが1つのフィールドではなく別の行に表示されます。

フィールドの値は csv で

[<333message:Runtime error in script' ProcessItem: ' Type: 'ITEM'" 1:0).Internal Script error: java.lang.NullPointerException
Script (line 1):
setHours = 0 ;
if(ts.instanceId == null )
" 3 : ts.instanceId = 0 ;"
ステップ >]

int ncols = result.getMetaData().getColumnCount();  

            System.out.println("ColumnCout"+ncols);  
            FileOutputStream fos=new FileOutputStream(new File("C:\\test.csv"),false);  
            Writer out = new OutputStreamWriter(new BufferedOutputStream(fos),"UTF_8");      

            for (int j=1; j<(ncols+1); j++) {     
            out.append(result.getMetaData().getColumnName (j));       
            if (j<ncols) out.append(","); else out.append("\r\n");      
            }   
            int m =1;    

            while (result.next()) {   

            for (int k=1; k<(ncols+1); k++) {   

            out.append(result.getString(k));    

            if (k<ncols) out.append(","); else out.append("\r\n");    
            }   
            //System.out.println("No of rows"+m);   
            m++;   
            }  
4

2 に答える 2

22

「java.sql.ResultSet」クラスを使用していますか? はいの場合は、このリンクのライブラリを参照してくださいhttp://opencsv.sourceforge.net/

例を参照してください。

CSVWriter csvWriter = new CSVWriter(new FileWriter("yourfile.csv"), '\t');
java.sql.ResultSet myResultSet = .... ;
csvWriter.writeAll(myResultSet, includeHeaders);
于 2013-08-08T14:41:03.670 に答える
3

改行を含む可能性のある列の値を取得します

String multiLine = null;
if (k == <col_index> && (mutiLine = rs.getString(k)) != null)
    out.append(multiLine.replaceAll("\\n", ""));
else
    out.append(result.getString(k));

同様にすべての列をフィルター処理することもできますが、その場合、パフォーマンス ヒットが発生します。

于 2013-08-08T15:17:08.400 に答える