我尝试从几个csv文件中获取数据。我为数据库使用ConcatenateFilesDatabaseConnection

Database getDbFromFiles(List<File> files) {
    ListParameterization params = new ListParameterization();
    params.addParameter(ConcatenateFilesDatabaseConnection.Parameterizer.PARSER_ID, files);
    Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, params);
return db;
    }


如FileBasedDatabaseConnection

ListParameterization params = new ListParameterization();
params.addParameter(FileBasedDatabaseConnection.Parameterizer.INPUT_ID, filename);
Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, params);


但是当我运行时我得到了错误


  de.lmu.ifi.dbs.elki.utilities.optionhandling.UnspecifiedParameterException:
  没有为参数“ dbc.in”提供任何值:预期:输入的名称
  要解析的文件。
  de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException:
  参数dbc.parser的值错误。读:
  [src \ main \ resources \ data1.csv,src \ main \ resources \ data2.csv,
  src \ main \ resources \ data3.csv]。预期:解析器提供
  数据库。实现de.lmu.ifi.dbs.elki.datasource.parser.Parser


也许有人在ELKI上处理了几个文件,并且知道如何
做对了。我在ELKI中找不到处理多个文件的代码

最佳答案

您将解析器设置为List<File>。那行不通。

解析器是一种程序例程,用于解释某些(文本)数据流的输入。

您需要设置正确的参数(输入文件名,而不是解析器)。

https://github.com/elki-project/elki/blob/709dbfa01b40ad023885b0745bad2f26184a4ac7/elki-input/src/main/java/de/lmu/ifi/dbs/elki/datasource/ConcatenateFilesDatabaseConnection.java#L164

10-06 12:42