2014-02-06 38 views
0

我們基於Spring的Java,提供每個用戶(一個公司)自己的database.So當一個新用戶(CORP。)的企業應用程序註冊到我們,他們給我們提供了數據庫的位置(一個PostgreSQL )並且我們需要使他們的空白數據庫充滿我們的模式和我們的數據。
我的疑問句:插入架構編程

我需要自動化編程數據庫中插入模式的過程。

如何,我想我應該這樣做:
我會創造一些過程,將執行與插入模式到提供的數據庫命令,但我不知道這是一個可行辦法。

是這樣一種過程,我們可以與數據庫連接的API的執行?恐怕不是。

請人分享您的想法,在此先感謝

回答

2

你可能想看看空翻和liquibase

這兩個工具的支持從頭創建模式(運行所有腳本)或運行現有數據庫上的一部分腳本以從版本移動A到版本B.

+0

感謝您抽出寶貴的興趣,但有可能做到這一點我提到的方法是什麼? –

+0

這些工具都不使用存儲過程。相反,SQL(甚至是XML)文件是針對數據庫執行的。你從中得到的好處是版本控制。而且,你可以檢查你的腳本到源代碼控制(git/subversion) –

2

我覺得這樣做你所描述的方式是可怕的,像那些蘭斯提到,已經做的工作​​,並且做的相當不錯,你應該利用現有的工具。

如果你堅持在你的程序做,你可以運行直接通過PgJDBC或任何DDL語句。

如果堅持還包裹它在存儲過程(爲什麼?!?),您可以生成DDL作爲字符串並用PL/pgSQL的EXECUTE聲明運行DDL:

CREATE OR REPLACE FUNCTION make_table() RETURNS void AS $$ 
BEGIN 
    EXECUTE 'CREATE TABLE test (x integer);'; 
END; 
$$ LANGUAGE plpgsql; 

(我假設你不想只寫DDL並將它作爲普通語句插入到一個過程中,因爲當你只使用SQL腳本時,這會變得更加怪異)。