Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用Spring在内存数据库中启动和设置_Database_Spring_H2_Imdb - Fatal编程技术网

Database 使用Spring在内存数据库中启动和设置

Database 使用Spring在内存数据库中启动和设置,database,spring,h2,imdb,Database,Spring,H2,Imdb,我正在使用Spring用Java编写一个小的演示应用程序,它需要访问数据库。它应该在不同的机器上运行,而要建立一个真正的数据库需要花费太多的精力。因此,我想使用一个嵌入式的 DB有一个给定的模式(两个表)和一些(很少)预定义的条目。我正在寻找一种启动内存数据库、创建表和填充数据的简单方法。所有这些都应该在初始化Spring上下文时发生 我的方法是使用H2作为数据库,然后可能使用SpringBatch从csv或xml文件加载数据。然而,我希望有一个更简单的方法来实现这一点。是否有现成的数据库/框架

我正在使用Spring用Java编写一个小的演示应用程序,它需要访问数据库。它应该在不同的机器上运行,而要建立一个真正的数据库需要花费太多的精力。因此,我想使用一个嵌入式的

DB有一个给定的模式(两个表)和一些(很少)预定义的条目。我正在寻找一种启动内存数据库、创建表和填充数据的简单方法。所有这些都应该在初始化Spring上下文时发生

我的方法是使用H2作为数据库,然后可能使用SpringBatch从csv或xml文件加载数据。然而,我希望有一个更简单的方法来实现这一点。是否有现成的数据库/框架/工具可以做到这一点


只需要几个SQL命令就可以设置我需要的所有内容。我正在寻找一种在Spring环境中尽可能简单地实现这一点的方法。

Spring3在jdbc:embedded database元素的帮助下,从3开始增加了对嵌入式数据库的更多支持。了解更多信息


我还建议使用与JDK 6捆绑在一起的Derby。

是一个不错的选择

Spring有一些内置的嵌入式数据库支持,请参见文档中的。

使用H2,您可以在数据库URL本身中初始化数据库。示例:您有一个SQL脚本“start.SQL”,其中包含所有要初始化的脚本。这还可以包括从CSV文件创建表。然后使用以下形式的数据库URL
jdbc:h2:~/temp/test;init=runscript,来自“~/temp/start.sql”
。start.sql可能如下所示(这是我正在研究的一个示例-它显示了如何从CSV文件创建表):

如果不存在位置(id int主键,country varchar,
区域varchar、城市varchar、邮政编码varchar、纬度浮动、经度浮动、,
metroCode varchar,区域代码varchar)
从csvread(“~/Downloads/GeoLiteCity/GeoLiteCity Location.csv”)中选择*;
如果不存在块,则创建表(开始长、结束长主键、位置int)
从csvread(“~/Downloads/GeoLiteCity/GeoLiteCity Blocks.csv”)中选择*;
如果不存在,则创建别名ip2id$$
长ip2id(字符串s){
字符串[]x=s.split(\\);
return(Long.parseLong(x[0])>16和255)+”
((x>>8)和255)+“+”(x&255);
} $$;

+1这个提示:我无法想象还有比这更重要的方法。谢谢你的提示。我想知道我怎么会错过它。这正是我需要的。
create table if not exists location(id int primary key, country varchar, 
region varchar, city varchar, postalCode varchar, latitude float, longitude float, 
metroCode varchar, areaCode varchar) 
as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Location.csv');

create table if not exists blocks(start long, end long primary key, location int) 
as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Blocks.csv');

create alias if not exists ip2id deterministic as $$
long ip2id(String s) {
  String[] x = s.split("\\.");
  return (Long.parseLong(x[0]) << 24) + (Long.parseLong(x[1]) << 16) +
    (Long.parseLong(x[2]) << 8) + Long.parseLong(x[3]);
} $$;

create alias if not exists id2ip deterministic as $$
String id2ip(long x) {
  return (x >> 24) + "." + ((x >> 16) & 255) + "." + 
      ((x >> 8) & 255) + "." + (x & 255);
} $$;