【问题标题】:Automating database creation using psql使用 psql 自动创建数据库
【发布时间】:2011-05-26 10:25:27
【问题描述】:

我有一个文件,其中包含用于创建数据库的 SQL 命令。

我还有一组单独的文件,每个文件都包含用于创建函数的 SQL 命令。例如:

  • funcs_algebra.sql
  • funcs_trigonometry.sql
  • funcs_geometry.sql

假设我的主要 SQLscript 如下所示:

CREATE DATABASE mydb;

CREATE TABLE foo(id INT, name VARCHAR(32));
CREATE TABLE foobar(id INT, age REAL);

-- Commands below to import the functions in the separate files
-- funcs_algebra.sql
-- funcs_trigonometry.sql
-- funcs_geometry.sql

我想知道如何将这些文件包含在我的“主 SQL”中,这样​​我就只有一个文件可以传递给 psql。

目标是能够使用 psql 创建数据库(完整的函数),只需将此文件中的命令传递给 psql。

有人知道怎么做吗?

[编辑]

我可能应该说明我认为显而易见的事情。我想将与函数相关的 SQL 保留在单独的文件中,这样我就只有一个源要修改。这是我对逻辑进行分区并保留 DRY 的一种方式。

函数定义用于创建其他模板数据库 - 所以我想将它们保存在单独的文件中,但从我的 SQL 脚本中引用这些文件。

我能想到的唯一其他方法是编写一个连续调用 psql 的 bash 脚本——首先创建数据库,然后添加函数——不是很优雅,也不是很干。还有另一种(更优雅)的方式吗?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    你可以写:

    \i funcs_algebra.sql
    

    在您的主 SQL 脚本中包含额外的函数脚本。

    【讨论】:

    • 这就是我要找的东西!。谢谢
    • 一句警告:这将使您的脚本在psql之外的任何地方都无法使用。
    猜你喜欢
    • 2018-11-08
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    相关资源
    最近更新 更多