2017-10-17 168 views
2

我正在处理将用于将数据从Excel文件导入到SQL Server的SSIS包。我目前的挣扎是想办法让SSIS软件包准确地引入一个excel文件,而不必事先知道它的名称。我有一个同时包含0n excel文件的目录。我只想拉入最早创建时间的文件。这可能吗?使用SSIS在不知道文件名的情况下使用SSIS从Excel导入数据

我正在使用Visual Studio 2015构建SSIS包。我的数据库是SQL Server 2016

回答

1

要创建一个动态的文件连接:数据类型为String:

  1. 创建一个新的变量( '的SourceFile' 名称例)。

  2. 在'For Each Loop Container'映射该变量在'Variable Mapping'选项卡下的变量,并将'Enumerator Configuration'设置为正确的文件夹和文件扩展名。 'For Each Loop Container'将从该位置读取文件并将该文件的名称分配给该变量。

  3. 在您的文件连接的表达式属性设置ConnectionString属性@ [用户::的SourceFile]

这应该使你的文件的源动力。无论命名是什么,它都会选取文件,但文件格式必须一致。

仅使用SSIS任务,我不知道如何利用文件的创建日期来选择最早的文件,但如果文件名包含文件的创建日期,则可以将日期从@ [ User :: SourceFile]变量,并在每次执行'For Each Loop Container'时将其存储在另一个变量中,以确定哪个文件最早。

+0

谢谢你的回答。我遇到的问题是我只想一次带入一个文件,而不是文件夹中的所有文件。如果我这样做,那么这个包是不是会带入该位置的所有文件? –

+0

如果For Each Loop内没有其他任务,它将只读取文件名并将其分配给@ [User :: SourceFile]。它不会移动任何文件或执行任何其他任务,除非您将这些任务放在循环中。您可以使用循环来仅确定最旧文件的名称,并且一旦知道最早文件的名称,就将该值分配给另一个变量(例如:@ [User :: SourceFileMaxCreateDate]),并在ConnectionString中使用该新变量文件连接的属性 –

+0

呵呵。这并没有发生在我身上。谢谢! –