以编程方式插入架构

时间:2014-02-06 10:43:32

标签: java database postgresql schema

我们有一个基于spring-java的企业应用程序,它为每个用户(一个公司)提供了自己的数据库。所以,当一个新用户(公司)向我们注册时,他们会给我们他们数据库的位置(postgreSQL)和我们需要使他们的空白数据库填充我们的架构和我们的数据。
我的问题:

我需要以编程方式自动化在数据库中插入架构的过程。

我认为我应该这样做:
 我将创建一些程序来执行与将模式插入到提供的数据库相关的命令,但我不确定这是否合理。

我们可以使用数据库连接器的API执行此类过程吗?我不敢。

请人们分享您的想法,提前致谢

2 个答案:

答案 0 :(得分:2)

你可能想看看flyaway和liquibase

这两个工具都支持从头开始创建架构(运行所有脚本)或在现有数据库上运行脚本子集以从版本A移动到版本B.

答案 1 :(得分:2)

我认为按照你描述的方式做这件事很糟糕,你应该使用现有的工具,就像Lance提到的那样已经完成了这项工作,并做得相当好。

如果您坚持在程序中执行此操作,则可以直接通过PgJDBC或其他任何方式运行DDL语句。

如果你坚持也将它包装在存储过程中(为什么?!?),你可以生成DDL作为字符串并使用PL / PgSQL EXECUTE语句运行DDL:

CREATE OR REPLACE FUNCTION make_table() RETURNS void AS $$
BEGIN
    EXECUTE 'CREATE TABLE test (x integer);';
END;
$$ LANGUAGE plpgsql;

(我假设您不想只是编写DDL并将其作为普通语句推送到过程中,因为当您只使用SQL脚本时,这甚至会更奇怪。)