entfernen sie spalte aus csv in groovy / java
Ich verwende die Select-Abfrage, um die Daten aus der Datenbank abzurufen und eine CSV zu generieren, die einwandfrei funktioniert.
In meiner FDataKlasse habe ich unten Methode, wo ich für Zellenwert in CSV formatiere. Ich habe eine Spalte ATYPEin meiner Auswahlabfrage, die ich nicht in CSV schreiben möchte oder nach dem Schreiben einfach das vollständige Spaltenfeld ATYPEaus CSV löschen möchte, damit es nicht angezeigt werden kann.
Gibt es eine Möglichkeit, wie ich das in der folgenden Methode tun kann, um diese Logik auszuführen?
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()
}
}
Antworten
In dem unten angegebenen Code ist die genaue Syntax möglicherweise falsch (ich habe nur Anfängerkenntnisse in Groovy), aber Sie werden die Idee bekommen, wie Sie sie lösen können:
Filtern Sie die Spaltennamen vor dem Beitritt, z
writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))Filtern Sie die Daten vor dem Schreiben, dh
writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName -> //... }