hapus kolom dari csv di groovy / java
Saya menggunakan kueri Select untuk mengambil data dari database dan menghasilkan CSV yang berfungsi dengan baik.
Di FData
kelas saya, saya memiliki metode di bawah ini di mana saya melakukan pemformatan untuk nilai sel di csv. Saya memiliki kolom ATYPE
di kueri pemilihan saya yang tidak ingin saya tulis di csv atau mungkin setelah menulis cukup kosongkan ATYPE
bidang 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
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:
Saring nama kolom sebelum bergabung yaitu
writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))
Filter data sebelum menulis mis
writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName -> //... }