我想从CSV文件创建一个新的嵌入式h2数据库.这是csv文件的片段
国家,城市,AccentCity,地区,人口,经纬度
广告,aixovall,Aixovall,06,42.4666667,1.4833333
广告,安道尔,安道尔,07,42.5,1.5166667
ad,andorra la vella,Andorra la Vella,07,20430,42.5,1.5166667
广告,安道尔 - VIEILLE,安道尔 - 维埃耶,07,42.5,1.5166667
广告,安道尔,安道尔,07,42.5,1.5166667
我不想检索csv文件的所有字段.实际上,除了City和Region字段之外,我想要它们.
此外,我想只在POPULATION的内容不为空的情况下才将csv文件的内容插入到数据库中.
因此,在上面的csv示例中,我们只能将第3行插入到h2表WORLDCITIES中,因为它的'population'字段已被指示.
这是我写的一段代码.但是,正如您所看到的,还不够:
conn = DriverManager.getConnection(connectionURL, connectionProps);
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE WORLDCITIES"
+ " AS SELECT COUNTRY, ACCENTCITY, POPULATION, LATITUDE, LONGITUDE"
+ " FROM CSVREAD('snippet.csv'));
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,CSVREAD使用VARCHAR类型创建字段,但我想要这样的事情:
国家/地区(3),ACCENTCITY VARCHAR(40),人口浮动,纬度浮动,纵向浮动
在此先感谢您的帮助.
..我有一个应用程序(.war),它有一个插件系统,其中每个可插入插件都是一个带有.jar依赖项的.jar.在webapp中,通过管理Web界面,使用ClassLoader加载插件,该类"加载".jar及其依赖项.但问题是,例如,2个插件A和B可能有一个或多个公共依赖项(commons-io.jar,commons-collection.jar,...)...所以通常我不应该加载更多一次.jar已经被另一个插件加载,或者已经存在于webapp本身 - > WEB-INF/lib /所以,我想知道是否有一种方法可以不加载另一个时间.jar已经存在了通过webapp或其他插件加载如果可能,我该怎么做!
实际上,无论可用的解决方案是什么,我只想避免类加载器问题.
注意:每个插件都是一个.zip文件,其中包含以下体系结构
插件名称/
- code/
- A.class
- B.class
- ...
- lib/
- commons-io.jar
- log4j.jar
- ....
- description.xml
- version.txt
Run Code Online (Sandbox Code Playgroud)
目录代码中的每个.class文件都由类加载器加载,插件的lib /目录中的每个.jar也被加载.
但通常,我不应该重新加载.jar"commons-io.jar"中存在的类,如果它已经存在的话......
我希望我已经足够清楚了,先谢谢你的关注和帮助.