这是一个关于Sql生成的问题,而不是sql创建sql和ORM。实用程序创建sql语句
是他们的任何跨数据库工具,可以创建插入语句,例如用于特定模式或命名空间中的所有表。假设Sql Server 2008中的名称空间/模式是Aqua,并且您的实用程序随之而来,并为该名称空间/模式生成所有可能的插入语句。它适用于Oracle/MySql/Postgres/db2等。
谢谢。 Bob
这是一个关于Sql生成的问题,而不是sql创建sql和ORM。实用程序创建sql语句
是他们的任何跨数据库工具,可以创建插入语句,例如用于特定模式或命名空间中的所有表。假设Sql Server 2008中的名称空间/模式是Aqua,并且您的实用程序随之而来,并为该名称空间/模式生成所有可能的插入语句。它适用于Oracle/MySql/Postgres/db2等。
谢谢。 Bob
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/
谢谢,尼古拉斯,这反映了我发现的东西。我想蟾蜍可能已经能够做到了。它曾经,但我看到它现在由Quest所有,现在也是供应商特定的。我会看看红门的sql utils,看看他们有什么。 – 2011-05-06 23:05:58
Oracle不支持INFORMATION_SCHEMA,iirc ... – 2011-05-07 03:32:47
类似于数据仓库的批量加载,似乎没有一种快速实用工具可以为给定的db体系结构创建插入或批量加载的最快可能效率,但这里有不同的场景。相反,有大量的crud生成器实用程序,半打代码生成器,如antrl,llbgen。 – 2011-05-27 15:39:42
INSERT语句,即使用'VALUES'或'INSERT ... SELECT'语法的广泛支持。只要你不使用供应商特定的语法(对于INSERT不是很多),你会没事的。 – 2011-05-06 21:40:01
@OMG小马,谢谢,我真的在寻找summat来创建供应商特定的sql,而不是通用或Ansi equivs。 – 2011-05-06 21:46:46
@scope_creep:你说的“所有可能的插入语句”是什么意思? *“所有可能的”*是无限的数字。 – 2011-05-06 21:50:05