有没有一种方法可以对内存中保存的CSV文本执行SQL查询,并可以从Java Reader(例如StringReader)中读取。
org.h2.tools.Csv.read(Reader reader,String [] colNames)将允许我检索包含所有行和列的结果集。但是,我实际上想对从阅读器读取的CSV文本执行查询。
背景- 我收到每个实体包含多个CSV部分的文件,请参阅H2数据库是否可以查询包含不同记录组的多个部分的CSV文件?,并在解析文件时将我需要的每个CSV节存储在Strings中(每个Strings一个String)。这不会浪费内存,因为我只将数据保留在内存中很短的时间,并且每个CSV部分都相对较小。我需要对这些CSV部分执行查询,以自定义格式构建文档。
我可以将每个CSV节写入一个文件(作为一组文件)并使用CSVREAD,但是我不想这样做,因为我需要我的应用程序尽快运行,并且将这些节分割并写入磁盘会受到影响硬盘死亡。
您可以编写一个用户定义的函数来返回结果集,并使用该函数生成所需的行。在用户定义的函数中,您可以使用H2中的Csv工具(实际上是任何Csv工具)。