【发布时间】:2009-04-24 15:14:50
【问题描述】:
我觉得这可能是一个疯狂的问题,如果有人对如何做到这一点有更好的想法,请务必告诉我。
我有一个 .Net C# 项目正在工作,它根据他们必须遵守的公司标准来验证某些表。这些表可以在 SQL Server 或 DB2 上。最初将表添加到程序中时,我使用选择语句从information_schema.columns 用于 sql 或syscat.columns 用于 db2 收集有关表的元数据/信息。获得该数据后,我将其存储在 sql server 上的一个表中(我们称之为all_table_information),其中包含程序中验证的每个表的相同信息。
如果表是 SQL 表,我可以运行这个查询(当然限制它只包含我想要的表中的列):
insert into [all_table_information]
(table_id, column_name, data_type, max_char_length)
select table_id, column_name, data_type, character_maximum_length
from information_schema.columns
where ...restrict to needed table...
然后在 SqlCommand 中执行。但如果是 DB2 表,我必须运行这个查询(再次限制在我需要的列):
select tabschema, tabname, colname, typename, length
from syscat.columns
where ...restrict to needed table...
然后获取一个带有结果的 DataReader 并循环使用它插入每一行:
while (dr.Read())
{
insert into [all_table_information]
(table_id, column_name, data_type, max_char_length) values
(..."'" + dr["whatever"] + "', '" + ....)
...execute sql here...
}
dr.Close();
这样做是可行的,但它很慢,所以我只是想知道是否有任何方法可以在一个语句中执行此操作?我知道您也可以将 db2 表信息保存到数据表中,但是您可以直接对数据表运行查询吗?
谢谢, 瑞恩
【问题讨论】: