我正在寻找一种用于管理静态数据的Java(或Groovy)解决方案,即不经常更改的表格中的数据,例如国家/地区列表。
我希望将国家/地区列表保留在文本文件中,并在服务器启动时自动更新表格。我不能简单地删除所有表,然后在文本文件中重新插入数据,因为这会违反关键约束。
DbUnit是一个支持从XML文件将数据加载到DB中的库。它有一个refresh operation 几乎可以满足我的需要。这将插入文件中但不在DB中的任何行,更新数据库中也在文件中的任何行,但它不会删除数据库中但不在文件中的任何行。
有没有人找到解决这个问题的好方法?
谢谢, 唐
答案 0 :(得分:1)
我之前通过推迟约束来解决这个问题。
通常,在行中插入或更新数据时会检查约束。插入行时,将检查所有约束并接受或拒绝该行。但是,您可以推迟约束检查,直到事务提交为止。见:
http://www.remote-dba.cc/t_garmany_easysql_deferred_constraints.htm
这是特定于供应商的行为。它在oracle中工作,但据我所知,mysql不支持。
答案 1 :(得分:0)
有几个开源的dbms系统,dbunit看起来很合理。
我很困惑为什么要将主副本保存为文本文件 - 为什么不将数据库用作主数据?
答案 2 :(得分:0)
如果您正在使用Hibernate,则可以使用Castor将国家/地区的XML文件(例如)加载到Hibernate模型对象中,然后保留这些对象。
您可能需要自己管理插入/更新/删除逻辑...可以使用此伪代码进行汇总:
我希望很清楚......我们有一个类似的过程,用户将上传一个XML文件来刷新数据库。