两个csv文件的水壶转换Java

问题描述 投票:0回答:1

我有两个csv文件employee.csv和loan.csv。

在employee.csv中,我有两列,即

nameOfEmployee(String)
{"empid":empid(Integer),"age": age(Integer),"education": "education(String)"}

NB:第二列为json属性列。

[loan.csv中,我有两列,即

nameOfLoan(String)
{"loan":loan(Double),"balance":balance(Double),"empid":empid(Integer)}

N.B:第二列作为json属性列

现在,我想通过empid json属性列将这两个csv文件合并为一个csv文件。

因此在result.csv文件中,四列应如下所示,

nameOfEmployee(String)
{"empid":empid(Integer),"age": age(Integer),"education": "education(String)"},nameOfLoan(String),{"loan":loan(Double),"balance":balance(Double),"empid":empid(Integer)}

一个单一的nameOfEmployee可能与许多nameOfLoans相关。

我必须仅通过使用Java或纯Java中的Kettle api程序来得出此结果。谁能帮我吗?

java csv pentaho kettle pentaho-data-integration
1个回答
0
投票

尝试此代码

public static void main( String[] args )
{
    File empFile = new File("C:\\Users\\Praveen\\Desktop\\emp.csv");
    File loanFile = new File("C:\\Users\\Praveen\\Desktop\\loan.csv");
    File outputFile = new File("C:\\Users\\Praveen\\Desktop\\data.json");

    List<Map<?, ?>> emp,loan;
    try {
        emp = readFromCsv(empFile);
        loan = readFromCsv(loanFile);
        emp.addAll(loan);
        writeToJson(emp, outputFile);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.getLocalizedMessage();
    }

}


public static List<Map<?, ?>> readFromCsv(File file) throws IOException {
    CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
    CsvMapper csvMapper = new CsvMapper();    
    MappingIterator<Map<?, ?>> mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file);
    return mappingIterator.readAll();
}

public static void writeToJson(List<Map<?, ?>> data1, File file) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    mapper.writeValue(file, data1);          
}

输出:output image

在pom.xml文件中添加依赖项或下载jar文件。

 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.3</version>
</dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-csv -->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>2.10.3</version>
</dependency>

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.