我觉得这可能是一个疯狂的问题,如果任何人有更好的想法如何做到这一点,请通过任何方式告诉我。从DB2表中选择并插入到SQL表中
我有一个.Net C#项目在工作中根据他们必须遵守的公司标准验证某些表。这些表可以在SQL Server或DB2上。当一个表最初被添加到程序中时,我使用sql的information_schema.columns
或db2的syscat.columns
的select语句收集关于表的元数据/信息。一旦我得到这些数据,我将它存储在一个表中(我们称它为all_table_information
)在sql服务器上,该表包含了程序中验证的每个表的相同信息。
如果表是一个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表信息保存到数据表中,但是可以直接对数据表运行查询吗?
感谢, 瑞安
你可以从.net内部调用SSIS吗?列信息来自的表格由程序内的一系列组合框选择确定。 – ryanulit 2009-04-24 15:24:32
相信你可以 - 你当然可以用DTS包“回到当天” – 2009-04-25 09:16:39