ลบคอลัมน์จาก csv ใน groovy / java

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

ในโค้ดที่ระบุด้านล่างไวยากรณ์ที่แน่นอนอาจผิดพลาด (ฉันเป็นแค่ความรู้ระดับเริ่มต้นในเรื่อง groovy) แต่คุณจะได้รับแนวคิดในการแก้ปัญหา:

  1. กรองชื่อคอลัมน์ก่อนเข้าร่วมเช่น

    writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR)) 
    
  2. กรองข้อมูลก่อนเขียนเช่น

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