我收集了一个数据集,并使用RecordSet目标将其分配给一个对象变量。
根据数据集中的记录数量,我需要遍历数据集并将记录吐出到文件中。例如,如果原始数据集中有5000条记录,我需要循环5次以创建包含1000条记录的文件,名为MyFile_1.txt,MyFile_2.txt等。
在数据流中的脚本组件任务中,我使用RecordSet中的列填充输出缓冲区。在这样做的过程中,我创建了一个新的OleDbAdapter和DataTable,然后用对象变量填充它们。
第一次这很棒。但是,第二次,DataAdapter.Fill(DataTable,ObjectVariable)方法执行时没有错误,但DataTable中没有行。在调试时,我可以深入查看Object变量中是否还有记录。
有人有什么想法吗?
答案 0 :(得分:2)
这是一个有效的脚本任务。它需要引用Microsoft ActiveX Data Objects 2.x
public void Main()
{
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dt = new DataTable();
ADODB.Stream stm = new ADODB.Stream();
ADODB.Recordset rs = ((ADODB.Recordset)Dts.Variables["User::Variable"].Value).Clone();
ADODB.Recordset rsCopy = new ADODB.Recordset();
rs.Save(stm);
rsCopy.Open(stm);
da.Fill(dt, rs);
dt.Clear();
da.Fill(dt, rsCopy);
Dts.TaskResult = (int)ScriptResults.Success;
}
您可以根据需要多次将数据从流中提取到新记录集中。