xóa cột khỏi csv trong groovy / java
Tôi đang sử dụng truy vấn Chọn để truy xuất dữ liệu từ cơ sở dữ liệu và tạo CSV đang hoạt động tốt.
Trong FDatalớp của tôi, tôi có phương pháp dưới đây, nơi tôi đang thực hiện định dạng cho giá trị ô trong csv. Tôi có cột ATYPEtrong truy vấn đã chọn của mình mà tôi không muốn viết bằng csv hoặc có thể sau khi viết, chỉ cần xóa trường cột hoàn chỉnh ATYPEkhỏi csv để nó không được hiển thị.
Có cách nào tôi có thể làm điều đó trong phương pháp dưới đây để thực hiện logic này không?
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()
}
}
Trả lời
Trong đoạn mã được đưa ra bên dưới, cú pháp chính xác có thể sai (tôi chỉ là người mới bắt đầu kiến thức về Groovy) nhưng bạn sẽ có ý tưởng về cách giải quyết nó:
Lọc tên cột trước khi tham gia tức là
writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))Lọc dữ liệu trước khi viết tức là
writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName -> //... }