我有两个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程序来得出此结果。谁能帮我吗?
尝试此代码
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);
}
在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>
我希望这会有所帮助。