如何使用PostgreSQL initdb创建临时数据库?

3
如何使用initdb创建PostgreSQL的临时数据库?还有,如何用虚拟数据填充它,并在使用后删除它?
我有整个数据库的模式。我不想逐个创建临时表。使用initdb,我希望能够提供模式并获得创建了表等的数据库。
这是为了运行Spring Boot应用程序的集成测试。我使用MyBatis访问数据库。
我可以使用像Arquillian这样的其他工具吗?

1
在Postgres中没有所谓的“临时数据库”。initdb会创建一个完整的“集群”(也称为“实例”),而不是一个数据库。如果您想使用临时表,只需运行必要的“create temporary table”语句即可。 - user330315
@a_horse_with_no_name 应该有一种方法来模拟临时数据库的情况。 - Tarun Maganti
@TarunMaganti:不,没有。 - user330315
@a_horse_with_no_name他们怎么测试这样的数据库? - Tarun Maganti
1
@TarunMaganti,你无法完全模仿PostgresSQL使用H2。顺便说一下,为了进行一些数据库模拟,我推荐你使用JUnit(http://junit.org)+ H2(http://www.h2database.com)+ DBSetup(http://dbsetup.ninja-squad.com)或者`DBUnit`(http://dbunit.sourceforge.net);这可能不是最好的软件包,但它可以工作。 - Zorglube
显示剩余4条评论
1个回答

1

有一个解决方法,只需将数据目录更改为RAM文件系统,例如这样一旦重新启动计算机,数据就会消失。最好不要在脚本中更改任何内容。


你说的“最好不要在脚本中更改任何内容”是什么意思?我能在CI中做到这一点吗? - Tarun Maganti
这似乎是一个相当冒险的解决方案,但为什么不呢?最终数据库将在内存中。 - Zorglube
我的意思是“更好的...脚本”,即您不会更改创建表格和插入数据的脚本。这种用例仅用于测试,CI就是关于测试。 - rachid el kedmiri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接