2011-05-06 48 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