我正在寻找一个解决方案,以导入任何csv文件与Java(或在运行时用Java应用程序计算的SQL)。一种可能性是首先编写一个动态文件,然后在创建后在h2数据库连接上运行“脚本”。我的主要问题是我动态创建csv文件,列号和标签值可能不同。获得连接的环境,在H2上运行脚本并在应用程序运行期间创建文件仍然存在。
现在我找到了许多解决方案,如果我知道csv结构,但我不知道它之前。另一个问题是,类型是永远不确定(如果它是更容易找到一个解决方案,让说所有的双.
我需要这个的原因是,我想在图表中显示数据集(linechart)。有时我需要前两行作为x轴。有时我必须显示一行有时更多(所以在csv中有一个ylabel或更多)
我想在数据库中保存这些数据的原因是我曾经想根据x轴标准显示这组数据的最小值、最大值和平均值。(smt.按月、日、周显示)。因此,我的想法是通过创建数据并阅读图表组的DATE(DATE,TIME)
数据来设置日期格式。
示例:我的基本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
我们可以确保所有的行都有相同的长度。标签在第一行。我希望你得到的想法。如果你有一个更好的解决方案来解决它,我也会听!(对不起的风格不知道如何使一个表)
谢谢你的命令!
2条答案
按热度按时间aij0ehis1#
可以肯定的是使用以下SQL命令:
这样,所有列都将创建为大小匹配的varchar。
但是在那之后,如果你想处理这些数据,你必须知道你需要哪一列(位置或列名),以及你想把数据解析成哪一种类型。
当然,尝试所有的可能性并抓住每一个例外是可能的。如果没有任何东西成立,你可以扔掉这个措施并继续下去,但这不是最好的做法。
e5nszbig2#
默认情况下,所有列的数据类型都设置为varchar,如果这样做,您可以自己选择,然后进行此查询。