supprimer la colonne de csv dans groovy / java
J'utilise la requête Select pour récupérer les données de la base de données et générer un CSV qui fonctionne bien.
Dans ma FData
classe, j'ai la méthode ci-dessous où je fais le formatage pour la valeur de la cellule en csv. J'ai une colonne ATYPE
dans ma requête de sélection que je ne veux pas écrire en csv ou peut-être après l'écriture, effacez simplement le ATYPE
champ de colonne complet de csv afin qu'il ne puisse pas être affiché.
Existe-t-il un moyen de le faire dans la méthode ci-dessous pour faire cette logique?
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()
}
}
Réponses
Dans le code ci-dessous, la syntaxe exacte peut être erronée (je n'ai qu'une connaissance de niveau débutant en groovy) mais vous aurez une idée de la façon de la résoudre:
Filtrer les noms de colonnes avant de rejoindre ie
writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))
Filtrer les données avant d'écrire ie
writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName -> //... }