如何将函数保存到 PostgreSQL 中的单个文件?

Fer*_*ndo 7 postgresql backup version-control functions postgresql-9.1

我维护一个使用 PostgreSQL 数据库的遗留应用程序。

该应用程序严重依赖于存储过程(又名函数)。

我想将这些函数保存到以函数名命名的文件中,以便我可以使用 VCS(版本控制系统)。

我知道我可以ALTER FUNCTION使用 using保存代码,PgAdmin但这一次只允许我保存一个函数。

我正在寻找一种自动保存所有功能的方法。有没有办法编写此任务的脚本?

Fer*_*ndo 4

我使用 pg_get_functiondef 编写了一个简单的 PHP 脚本来获取源代码,然后将其保存到文件中。

$connection = pg_connect("connection string details");
$result = pg_query($connection, "select proname, pg_get_functiondef(oid) from pg_proc where pronamespace=<namespace_oid>");

while ($row = pg_fetch_row($result)) {
    $fp = fopen("{$row[0]}.sql", 'w');
    fwrite($fp, $row[1]);
}
Run Code Online (Sandbox Code Playgroud)