我尝试从几个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