java - 在java中合并多个csv文件

标签 java csv merge multiple-columns supercsv

我有 3 个 csv 文件。每个文件包含 10 列,但其中只有 1 列具有不同的值。

荷兰语 Dutch

法语 French

英语 English

如图所示,每种语言仅目的地名称不同。

我想要变成这样的 csv 文件: Merged csv's

如何将列放在现有列之间以及如何更改它们的标题(DEST_NAME_DISPLAY --> DEST_NAME_EN)?

到目前为止,除了使用 Super csv 读取 csv 文件之外,我对 csv 操作几乎没有经验。

到目前为止我所知道的示例

public List<City> readWithCsvMapReader(String file, String source) throws IOException, AuthenticationException, RepositoryException {
    ICsvMapReader mapReader = null;
    FileInputStream stream = new FileInputStream(file);
    InputStreamReader reader = new InputStreamReader(stream, ENCODING);
    try {
        mapReader = new CsvMapReader(reader, PREFERENCE);
        final String[] header = mapReader.getHeader(true);
        final CellProcessor[] processors = getProcessors();
        Map<String, Object> locationMap;
        while ((locationMap = mapReader.read(header, processors)) != null) {
            /*do some logic*/
        }
    } finally {
        if (mapReader != null) {
            mapReader.close();
        }
    }
}

public CellProcessor[] getProcessors() {
    final CellProcessor[] processors = new CellProcessor[]{
            new NotNull(), // COU_ID
            new NotNull(), // COU_NAME
            new NotNull(), // DEST_ID
            new NotNull(), // DEST_NAME_DISPLAY
            new Optional(), //DEST_PARENT_ID
            new NotNull(), // DEST_STATION_COUNT
            new NotNull(), // DEST_CHILD_DEST_COUNT
            new NotNull(), // DEST_FLAG_APT
            new NotNull(), // DEST_FLAG_WIN
            new NotNull(), // DEST_FLAG_DEL
    };
    return processors;
}

最佳答案

打开所有三个 CSV 文件。

在每次迭代中,从每个文件中读取一行,从一个文件中获取所有单元格值,并从其他两个文件中获取不同单元格的值。合并到包含所有所需数据的新行,将此行写入输出 CSV。

关闭所有文件。处理异常状态(每个文件中的行数不同、每个文件当前行的 ID 不同,...)。

关于java - 在java中合并多个csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366162/

相关文章:

java - 缓冲 JavaScript 并附加到页面末尾的 JSP 库

java - 使用 java 访问嵌套的 JSON 对象值

visual-studio - 数据驱动的 MS 使用分号分隔符测试 CSV

java - 录音时可以合并音频(音频位置 "res - raw - audio.mp3")吗?

java - 单例模式在多线程环境中有什么问题吗?

java - 了解 Hibernate saveOrUpdate 和持久化生命周期

ruby - 将新列添加到 ruby​​ 中 .csv 的每一行

java - 无法将 .csv 转换为 .arff 文件

ios - 如何以编程方式打开 .xcodeproj?

hadoop - 合并和覆盖 pig 中的数据集