pai*_*sad 8 java database csv h2
我想从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),人口浮动,纬度浮动,纵向浮动
在此先感谢您的帮助.
Tho*_*ler 10
您可以在CREATE TABLE添加列定义为 记录在案,并用WHERE子句结合这一点.请注意使用CREATE TABLE AS SELECT比单独的CREATE TABLE和INSERT INTO语句快一点(不确定速度对您来说非常重要):
CREATE TABLE WORLDCITIES(
COUNTRY VARCHAR(3),
ACCENTCITY VARCHAR(40),
POPULATION FLOAT,
LATITUDE FLOAT,
LONGITUDE FLOAT)
AS SELECT
COUNTRY,
ACCENTCITY,
POPULATION,
LATITUDE,
LONGITUDE
FROM CSVREAD('snippet.csv')
WHERE POPULATION IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8126 次 |
最近记录: |