2011-05-06 66 views
1

這是一個關於Sql生成的問題,而不是sql創建sql和ORM。實用程序創建sql語句

是他們的任何跨數據庫工具,可以創建插入語句,例如用於特定模式或命名空間中的所有表。假設Sql Server 2008中的名稱空間/模式是Aqua,並且您的實用程序隨之而來,併爲該名稱空間/模式生成所有可能的插入語句。它適用於Oracle/MySql/Postgres/db2等。

謝謝。 Bob

+0

INSERT語句,即使用'VALUES'或'INSERT ... SELECT'語法的廣泛支持。只要你不使用供應商特定的語法(對於INSERT不是很多),你會沒事的。 – 2011-05-06 21:40:01

+0

@OMG小馬,謝謝,我真的在尋找summat來創建供應商特定的sql,而不是通用或Ansi equivs。 – 2011-05-06 21:46:46

+0

@scope_creep:你說的「所有可能的插入語句」是什麼意思? *「所有可能的」*是無限的數字。 – 2011-05-06 21:50:05

回答

1

ANSI SQL提供模式INFORMATION_SCHEMA下的一組標準視圖來爲此目的提供元數據。

生成簡單的表的INSERT語句模板,所有的信息,你真的需要生成指定表的INSERT語句來執行這個查詢:在支持ANSI信息架構視圖的任何數據庫

select * 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_CATALOG = <my-db-name> 
    and TABLE_SCHEMA = <table-owner-schema> 
    and TABLE_NAME = <table-name> 
order by ORDINAL_POSITION 

。這將按照預期的順序爲指定表中的每一列提供一行。

除了上述情況以外,由於沒有兩個供應商使用元數據支持系統表集,所以您可以使用幾乎適用於跨數據庫解決方案的SOL。可悲的是,我不相信Oracle支持ANSI信息模式視圖。

雖然你可能看紅門產品系列:http://www.red-gate.com/

+0

謝謝,尼古拉斯,這反映了我發現的東西。我想蟾蜍可能已經能夠做到了。它曾經,但我看到它現在由Quest所有,現在也是供應商特定的。我會看看紅門的sql utils,看看他們有什麼。 – 2011-05-06 23:05:58

+2

Oracle不支持INFORMATION_SCHEMA,iirc ... – 2011-05-07 03:32:47

+0

類似於數據倉庫的批量加載,似乎沒有一種快速實用工具可以爲給定的db體系結構創建插入或批量加載的最快可能效率,但這裏有不同的場景。相反,有大量的crud生成器實用程序,半打代碼生成器,如antrl,llbgen。 – 2011-05-27 15:39:42