【发布时间】:2017-01-14 16:47:56
【问题描述】:
我有一个 SSIS 包,我试图将数据从 Excel 文件源加载到 OLE DB 目标中。我想将文件名也加载到目标表中,而不是原始文件名的一部分。
谁能为此提供一些提示?
【问题讨论】:
-
能否参数化 Excel 源连接管理器文件名,然后在需要的地方使用该参数?由于开发测试和实际环境的差异,我还是倾向于这样做
标签: ssis
我有一个 SSIS 包,我试图将数据从 Excel 文件源加载到 OLE DB 目标中。我想将文件名也加载到目标表中,而不是原始文件名的一部分。
谁能为此提供一些提示?
【问题讨论】:
标签: ssis
如果您不想参数化,则使用脚本任务,捕获连接字符串,然后使用子字符串从连接字符串中提取 ExcelFileName。
步骤如下:
在你的脚本任务中使用这个脚本
public void Main()
{
// TODO: Add your code here
ConnectionManager con = Dts.Connections["EX_SRC_CON"];
string conStr = con.ConnectionString;
int firstCharacter = conStr.LastIndexOf("\\");
int lastCharacter = conStr.IndexOf(".xlsx");
string fileName = conStr.Substring(firstCharacter + 1, (lastCharacter - (firstCharacter + 1)));
Dts.Variables["User::FileName"].Value= fileName;
Dts.TaskResult = (int)ScriptResults.Success;
}
请注意,“EX_SRC_CON”是您的 Excel 连接管理器,我们将仅从中提取 Excel 文件名。从脚本中可以看出,我们正在将 Excel 文件写入字符串“FileName”
接下来,将脚本任务连接到您的数据流任务 (DFT)。在 DFT 中,在 Excel 源中,选择数据访问模式:“SQL 命令”并使用以下脚本
选择 *, ? FROM [PolicyList$]
PolicyList$ 是您的工作表名称,我们需要将变量“FileName”映射到 ?在“参数”选项卡下。
接下来将列从 Excel 源连接到您的 OLE DB 目标。
【讨论】: