我有一组平面文件(114 个文件),每个文件都用数据库表名命名。我有数据库模式,所以我的数据库已经准备好了,里面没有记录。
我所要做的就是处理这些平面文件并将这些记录插入相应的表中。
我创建了一个 SSIS 包,我正在尝试在 Ole DB 目标中设置动态表名。
我使用变量来设置动态表名。
我的包裹是这样的
在脚本任务中,我正在为变量设置值
public void Main()
{
// TODO: Add your code here
string _path = string.Empty;
if(Dts.Variables["FilePath"] != null)
_path = Dts.Variables["FilePath"].Value.ToString();
//MessageBox.Show(_path);
//Variables vars = default(Variables);
//Dts.VariableDispenser.LockForWrite("TableName");
//vars["TableName"].Value = _path.Replace(@"C:\Users\GD\", "").Replace(".txt", "");
Dts.Variables["TableName"].Value = _path.Replace(@"C:\Users\GD\","").Replace(".txt","");
MessageBox.Show(_path + Environment.NewLine +"TableName: " + Dts.Variables["TableName"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
messageBox 给了我预期的数据。但 Ole DB 目标表无法识别来自第二个循环的表名。
变量
Ole DB 目标设置
错误信息:
[OLE DB Destination [55]] Error: Column "ActiveCompositionGenericID" cannot be found at the datasource.
“ActiveCompositionGenericID”这是第一个目标表和第一个源文件中的列。
对于循环中的第二个文件,这在源文件中是不应该的(正在发生),这也不应该在目标表中。
此错误消息向我证实,目标表仍指向第一个表名,并且没有更改。