groovy / java'da csv'den sütun kaldır

Aug 18 2020

Verileri veritabanından almak ve iyi çalışan CSV oluşturmak için Seç sorgusunu kullanıyorum.

FDataSınıfımda, csv'de hücre değeri için biçimlendirme yaptığım aşağıdaki yönteme sahibim . Ben sütuna sahip ATYPEi csv yazmak istiyorum daha dont ya da sadece tam sütun temizlemek yazdıktan sonra olabilir benim seçme sorguda ATYPEo gösterilebilir olamaz böylece csv den alan.

Bu mantığı yapmak için aşağıdaki yöntemde bunu yapmanın bir yolu var mı?

private static void IFile(File output, Sql sql, String query, List<String> columns) {
        output.withWriter { writer ->            
            writer.writeLine(columns.join(CSV_SEPARATOR))           
            sql.eachRow(query) { rec ->
                try {
                    writer.writeLine(columns.collect { columnName ->
                        def cell = rec[columnName]
                        // cell data processing for CSV output...If cell is empty then replace with "" else do the other formating
                        if (cell != null) {                                
                            if (cell.properties["class"] == Timestamp.class)
                                return IData.OUT_DATE_FORMAT.format(cell)                              
                            
                        }
                        else {
                            return ""
                        }
                        return cell
                    }.join(CSV_SEPARATOR))
                }                 }
            sql.close()
        }
    }

Yanıtlar

1 LiveandLetLive Aug 19 2020 at 08:36

Aşağıda verilen kodda, tam sözdizimi yanlış olabilir (sadece harika bir başlangıç ​​düzeyinde bilgim var) ancak nasıl çözüleceğine dair bir fikir edineceksiniz:

  1. İe'ye katılmadan önce sütun adlarını filtreleyin

    writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR)) 
    
  2. İe yazmadan önce verileri filtreleyin

     writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName ->
         //...
     }