【问题标题】:Inserting schema Programmatically以编程方式插入模式
【发布时间】:2014-03-03 06:15:05
【问题描述】:

我们有一个基于 spring-java 的企业应用程序,它为每个用户(一个公司)提供自己的数据库。因此,当新用户(公司)向我们注册时,他们会向我们提供他们的数据库(postgreSQL)的位置,我们需要让他们的空白数据库充满我们的模式和我们的数据。
我的问题:

我需要以编程方式将模式插入数据库的过程自动化。

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

我们可以使用数据库连接器的 API 执行这种过程吗?恐怕不行。

请大家分享你的想法,在此先感谢

【问题讨论】:

    标签: java database postgresql schema


    【解决方案1】:

    你可能想看看 flyaway 和 liquibase

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

    【讨论】:

    • 感谢您的关注,但是可以按照我提到的方式进行吗?
    • 这些工具都不使用存储过程。相反,SQL(甚至 XML)文件是针对数据库执行的。您从中获得的好处是版本控制。而且,您可以将您的脚本签入源代码控制(git / subversion)
    【解决方案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 脚本,那会更奇怪)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-15
      • 2022-01-19
      • 2016-10-29
      • 1970-01-01
      • 2011-05-17
      • 2015-10-07
      • 2021-11-14
      • 2011-04-07
      相关资源
      最近更新 更多