remover coluna de csv em groovy / java
Estou usando a consulta Select para recuperar os dados do banco de dados e gerar CSV, que está funcionando bem.
Na minha FData
aula, tenho o método abaixo em que estou fazendo a formatação para o valor da célula em csv. Eu tenho uma coluna ATYPE
na minha consulta de seleção que não quero escrever em csv ou pode ser depois de escrever apenas limpe o ATYPE
campo de coluna completo do csv para que não possa ser mostrado.
Existe uma maneira de fazer isso no método abaixo para fazer essa lógica?
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()
}
}
Respostas
No código fornecido a seguir, a sintaxe exata pode estar errada (tenho apenas um conhecimento de nível iniciante em groovy), mas você terá uma ideia de como resolvê-lo:
Filtre os nomes das colunas antes de entrar, ou seja
writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))
Filtre os dados antes de escrever, ou seja
writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName -> //... }