2010-12-16 98 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