groovy / java의 csv에서 열 제거

Aug 18 2020

Select query를 사용하여 데이터베이스에서 데이터를 검색하고 정상적으로 작동하는 CSV를 생성합니다.

FData수업에는 csv에서 셀 값의 형식을 지정하는 방법이 있습니다. 나는 열이 ATYPE난 CSV에서 작성하려는 해달라고하거나 전체 열 삭제 작성 후 수 있습니다 내 선택 쿼리에서 ATYPE이 보여 질수 그래서 CSV에서 필드.

이 논리를 수행하기 위해 아래 방법에서 할 수있는 방법이 있습니까?

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()
        }
    }

답변

1 LiveandLetLive Aug 19 2020 at 08:36

아래에 주어진 코드에서 정확한 구문은 틀릴 수 있지만 (저는 그루비에 대한 초급 수준의 지식 일뿐입니다) 해결 방법에 대한 아이디어를 얻을 수 있습니다.

  1. 조인하기 전에 열 이름을 필터링하십시오.

    writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR)) 
    
  2. 즉 쓰기 전에 데이터 필터링

     writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName ->
         //...
     }