gpt4 book ai didi

java - 如何从 CSV 文件的某些字段创建 h2 数据库

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:36:22 27 4
gpt4 key购买 nike

我想从 CSV 文件创建一个新的嵌入式 h2 数据库。这是 csv 文件的片段

Country,City,AccentCity,Region,Population,Latitude,Longitude

ad,aixovall,Aixovall,06,,42.4666667,1.4833333

ad,andorra,Andorra,07,,42.5,1.5166667

ad,andorra la vella,Andorra la Vella,07,20430,42.5,1.5166667

ad,andorra-vieille,Andorra-Vieille,07,,42.5,1.5166667

ad,andorre,Andorre,07,,42.5,1.5166667

我不想检索 csv 文件的所有字段。实际上,除了CityRegion 字段外,我都想要它们。

而且,只有当 POPULATION 的内容不为空时,我才想将 csv 文件的内容插入到数据库中。

因此,在上面的 csv 示例中,我们只能将第 3 行插入到 h2 表 WORLDCITIES 中,因为指示了它的“人口”字段。

这是我写的一段代码。但是,如您所见,这还不够:

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'));

如果我理解正确,CSVREAD 使用 VARCHAR 类型创建字段,但我想要这样的东西:

COUNTRY VARCHAR(3)、ACCENTCITY VARCHAR(40)、人口 float 、纬度 float 、经度 float

在此先感谢您的帮助。

最佳答案

您可以在 CREATE TABLE as 中添加列定义documented并将它与 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;

关于java - 如何从 CSV 文件的某些字段创建 h2 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com