java - 动态导入h2中的csv

标签 java csv h2

我正在寻找一种解决方案,以便在 h2 数据库中使用 Java(或运行时使用 Java 应用程序计算的 SQL)导入任何 csv 文件。一种可能性是首先编写一个动态文件并在创建后在 h2 数据库连接上运行“脚本”。 我的主要问题是我动态创建 csv 文件并且列号和标签值可能不同。用于获取连接、在 h2 上运行脚本并在应用程序运行期间创建文件的环境仍然存在。

如果我知道 csv 结构但我以前不知道它,现在我找到了很多解决方案。另一个问题是 typ 永远不确定(如果更容易找到一个解决方案,假设所有都是双倍的。

我需要这个的原因是,我想在图表(折线图)中显示数据集。有时我需要前两行作为 x 轴。有时我不得不显示一行有时更多(所以在 csv 中有一个 ylabel 或更多)

我想将此数据保存在数据库中的原因是我想根据 x 轴标准显示此集合的最小最大值和平均值。 (sm. 每月、每天、每周显示)。因此,我们的想法是通过创建数据和按 DATE(DATE,TIME) 数据读取图表 i 组来设置日期格式。

例子: 我的基本 csv 示例

DATE,TIME,label1  ,  y2       ,line3  ,...  (labelNames have no equality)

20160101,0115, any int,any double ,any int,...

20160101,0130, ...    , ...       , ...   ,..   (if there is no messure 

20160101,0145, ...    ,  .....    , ---   ,..    the placefolder is '---')

20160101,0200, ....

20160102,...

所以有时我生成的 csv 看起来像:

DATE,TIME,label1,y2

或者像这样:

DATETIME,label1,y2

或者这个:

DATE,y2,another4

我们可以确定所有的行都具有相同的长度。标签在第一行。我希望你明白了。如果您有更好的解决方案来解决它,我也会听取!(抱歉,样式不知道如何制作表格)

感谢任何命令!

最佳答案

可以肯定的是使用这个 SQL 命令:

CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv'); <<from h2 docu>>

有了这个,所有的列都将被创建为具有匹配大小的 varchar。

但在那之后,如果你想使用这些数据,你必须知道你需要哪一列(位置或列名)以及你想将数据解析为哪种类型。

当然可以尝试所有的可能性并捕获每一个异常。如果没有任何问题,您可以放弃此措施并继续,但这不是最佳做法。

关于java - 动态导入h2中的csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041863/

相关文章:

java - 恢复 H2 数据库,同时只有 '.db' 扩展文件

java - 如何在Netbean的设计模式下更改JAVA SWING控件名称

java - 未找到 H2 DB 中的序列

java - 如何解决 java.lang.NoClassDefFoundError

php - 将 JSON 解析数组转换为 CSV

python - 读取列标题中包含多个定界符的文件并在末尾跳过某些行

php - 使用 mysql load data infile 处理大型 csv 文件

java - 如何分析运行Tomcat的嵌入式H2数据库的内存消耗?

java - Spring Controller 销毁方法?

java - 需要 mutator 方法我该怎么做