使用psql自动创建数据库

时间:2010-12-16 09:09:31

标签: postgresql

我有一个包含用于创建数据库的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

我想知道如何在'main SQL'中包含这些文件,这样我只有一个文件可以传递给psql。

目标是只需将psql中的命令传递给psql,就可以使用psql创建数据库(包括函数)。

任何人都知道怎么做?

[编辑]

我可能应该说出我认为很明显的东西。我想在SEPARATE文件中保留与函数相关的SQL,以便我只有一个要修改的源。这是我分区逻辑和保持事物DRY的一种方式。

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

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

1 个答案:

答案 0 :(得分:2)

你可以写:

\i funcs_algebra.sql

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