Я хотел бы создать новую встроенную базу данных h2 из CSV-файл. Вот фрагмент 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. На самом деле, мне нужны все, кроме полей Город и Регион .
И, кроме того, я хочу вставить содержимое файла csv в базу данных ТОЛЬКО ЕСЛИ содержимое POPULATION не пусто.
Таким образом, в приведенном выше примере 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), ПОПУЛЯЦИЯ НАСЕЛЕНИЯ, ПОПЛАВКА ШИРОТЫ, ПОПЛАВКА ДОЛГОТЫ
Заранее благодарим за помощь.