2010-12-16 78 views
1

我有一个包含用于创建数据库的SQL命令的文件。使用psql自动创建数据库

我也有一组单独的文件,每个文件都包含用于创建函数的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来使用psql创建数据库(包含函数)。

任何人都知道如何?

[编辑]

我也许应该说我认为是明显的。我想在SEPARATE文件中保留函数相关的SQL,这样我只有一个源可以修改。这是我分配逻辑和保存东西的一种方式DRY

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

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

回答

2

你可以写:

\i funcs_algebra.sql 

在主SQL脚本,包括额外的功能脚本。

+0

这就是我在找的东西!谢谢 – skyeagle 2010-12-16 09:40:43

+0

尽管有一句话警告:这会使你的脚本在除psql外的任何内容中都不可用。 – 2010-12-16 09:47:59