Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动构建脚本以更新postgres中的数据库_Java_Postgresql_Automation_Ddl - Fatal编程技术网

Java 自动构建脚本以更新postgres中的数据库

Java 自动构建脚本以更新postgres中的数据库,java,postgresql,automation,ddl,Java,Postgresql,Automation,Ddl,我们有一个使用postgres数据库的java系统。 这个数据库经常更改,我们每周更新一次或更少。这些更改是在数据库(DDL)的结构中进行的,通常是在函数和字段中添加新功能 对于数据库中的更改,我们通常使用navicat,如下所示: 1-我们使用navicat对数据库的结构进行了更改,并将SQL复制到一个XML文件中,用于我们所做的每个更改。 2-当我们必须在生产中更新数据库时,我们检查由版本号标识的文件,并更新数据库。 3-然后我们对安装的每个DB重复此操作(总共30个) 我们面临的问题是,由

我们有一个使用postgres数据库的java系统。 这个数据库经常更改,我们每周更新一次或更少。这些更改是在数据库(DDL)的结构中进行的,通常是在函数和字段中添加新功能

对于数据库中的更改,我们通常使用navicat,如下所示: 1-我们使用navicat对数据库的结构进行了更改,并将SQL复制到一个XML文件中,用于我们所做的每个更改。 2-当我们必须在生产中更新数据库时,我们检查由版本号标识的文件,并更新数据库。 3-然后我们对安装的每个DB重复此操作(总共30个)

我们面临的问题是,由于整个过程都是手动的,很容易忘记将更改复制到XML,因此当我们使用它时,脚本无法工作,或者当系统需要此更改失败时,情况更糟

因此,我们正在寻找一种自动化此任务的方法,我们提出了以下想法: 1-我们对navicat进行了更改 2-将postgres配置为将DDL中的更改记录到CSV文件中 3-稍后,我们读取CSV文件并将更改传递到XML以更新ProduAction DB

我们遇到的问题是,日志将保存所有更改结构的尝试,包括错误,因此如果我们使用该脚本进行更新,它也将失败

有没有办法在postgres的日志中只保存成功的DDL更改

是否有脚本或应用程序来获取DDL更改并自动将其放入脚本中


有没有更好的方法来自动化这个过程?

上面的问题有很多答案:-)我使用了许多方案来管理快速变化的数据库。一种方法是维护一个主数据库(就像您所拥有的那样)。使用dbtoyaml创建数据库的yaml描述。然后在所有(30)个目标上使用yamltodb,这将做一切必要的工作,使目标数据库看起来与主数据库一模一样。我已经使用这个软件6个月了,它太棒了-g

我建议您修改您的问题,使其更简洁。我尝试过,但它不支持setof和trigger函数。你使用已安装的pip版本,从git编译它?据我所知,它支持postgres中的所有内容。如果不是,那就是一个bug。