我们有一个基于spring-java的企业应用程序,它为每个用户(一个公司)提供了自己的数据库。所以,当一个新用户(公司)向我们注册时,他们会给我们他们数据库的位置(postgreSQL)和我们需要使他们的空白数据库填充我们的架构和我们的数据。
我的问题:
我需要以编程方式自动化在数据库中插入架构的过程。
我认为我应该这样做:
我将创建一些程序来执行与将模式插入到提供的数据库相关的命令,但我不确定这是否合理。
我们可以使用数据库连接器的API执行此类过程吗?我不敢。
请人们分享您的想法,提前致谢
答案 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脚本时,这甚至会更奇怪。)