通过SSIS加载最新的平面文件

时间:2018-04-26 18:05:24

标签: sql-server tsql ssis

我必须将2个平面文件加载到SQL Server表中。平面文件将加载到文件夹中。它有数千个其他文件。如果它是具有不同日期的同一文件,我会使用foreach循环并完成它。但这是场景。

我要加载的文件名如下:

  • Non_Payment_Stat_Data1_12_2017.txt
  • Payment_Stat_Data1_12_2017.txt

  • 每天加载文件

  • 我需要将上面的文件类型加载到表格中(选择天数加载)

还有许多其他文件,其中一些是Payment_Stat_DataNon_Payment_Stat_Data,最后没有日期部分。我们不想将这些加载到表中。

我尝试使用脚本任务c#代码,它给了我最新的文件但不是我们想要加载的文件。

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;

namespace ST_2650e9fc7f2347b2826459c2dce1b5be.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

        public void Main()
        {
            // TODO: Add your code here
            var directory= new DirectoryInfo(Dts.Variables["User::VarFolderPath"].Value.ToString());

            FileInfo[] files = directory.GetFiles();
            DateTime lastModified = DateTime.MinValue;

            foreach (FileInfo file in files)
            {
                if (file.LastWriteTime > lastModified)
                {
                    lastModified = file.LastWriteTime;
                    Dts.Variables["User::VarFileName"].Value = file.ToString();
                }
            }

            MessageBox.Show(Dts.Variables["User::VarFileName"].Value.ToString());

            Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
}

来源:http://www.techbrothersit.com/2013/12/ssis-how-to-get-most-recent-file-from.html

代码可以工作,但会提供另一个最新的平面文件..我只想提取Non_Payment_Stat_Data1_12_2017.txtPayment_Stat_Data1_12_2017.txt个文件。他们每天都会改变日期。

1 个答案:

答案 0 :(得分:0)

如果文件是以可预测的方式根据今天的日期命名的(您似乎是这样说的),那么只需使用expression作为平面中的文件名文件连接管理器。