hapus kolom dari csv di groovy / java

Aug 18 2020

Saya menggunakan kueri Select untuk mengambil data dari database dan menghasilkan CSV yang berfungsi dengan baik.

Di FDatakelas saya, saya memiliki metode di bawah ini di mana saya melakukan pemformatan untuk nilai sel di csv. Saya memiliki kolom ATYPEdi kueri pemilihan saya yang tidak ingin saya tulis di csv atau mungkin setelah menulis cukup kosongkan ATYPEbidang kolom lengkap dari csv sehingga tidak dapat ditampilkan.

Apakah ada cara saya bisa melakukannya di metode di bawah ini untuk melakukan logika ini?

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

Jawaban

1 LiveandLetLive Aug 19 2020 at 08:36

Dalam kode yang diberikan di bawah ini, sintaks yang tepat mungkin salah (saya baru saja memiliki pengetahuan tingkat pemula di groovy) tetapi Anda akan mendapatkan ide tentang cara mengatasinya:

  1. Saring nama kolom sebelum bergabung yaitu

    writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR)) 
    
  2. Filter data sebelum menulis mis

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