samedi 25 juin 2016

splitting of csv file based on column value in java

I want to split csv file into multiple csv files depending on column value.
Structure of csv file: Name,Id,Dept,Course

abc,1,CSE,Btech 
fgj,2,EE,Btech 

(Rows are not separated by ; at end)

If value of Dept is CSE or ME , write it to file1.csv, if value is ECE or EE write it to file2.csv and so on.

Can I use drools for this purpose? I don't know drools much.

Any help how it can be done?

This is what I have done yet:

public void run() {

    String csvFile = "C:/csvFiles/file1.csv";
    BufferedReader br = null;
    BufferedWriter writer=null,writer2=null;
    String line = "";
    String cvsSplitBy = ",";
    String FileName = "C:/csvFiles/file3.csv";
    String FileName2 = "C:/csvFiles/file4.csv";

    try {

        writer = new BufferedWriter(new FileWriter(FileName));
        writer2 = new BufferedWriter(new FileWriter(FileName2));
        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {

               String[] values=line.split(cvsSplitBy);

            if(values[2].equals("CSE"))
            {
                writer.write(line);
            }
            else if(values[2].equals("ECE"))
            {
                writer2.write(line);
            }


        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
                writer.flush();
                writer.close();
                writer2.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

Aucun commentaire:

Enregistrer un commentaire