Загружать последние плоские файлы через SSIS - PullRequest
0 голосов
/ 26 апреля 2018

Мне нужно загрузить 2 плоских файла в таблицу SQL Server. Плоские файлы загружаются в папку. У него есть тысячи других файлов. Если бы это был один и тот же файл с разными датами, я бы использовал цикл foreach и сделал это ... но вот сценарий.

Имена файлов, которые я хочу загрузить, следующие:

  • Non_Payment_Stat_Data1_12_2017.txt
  • Payment_Stat_Data1_12_2017.txt

  • Файлы загружаются ежедневно

  • Мне нужно загрузить чуть выше тип файла в таблицу (выбрать загрузку дней)

Есть много других файлов, некоторые из которых Payment_Stat_Data или Non_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.txt и Payment_Stat_Data1_12_2017.txt. Дата будет меняться каждый день.

1 Ответ

0 голосов
/ 26 апреля 2018

Если файл назван предсказуемым образом на основе сегодняшней даты (как вы, кажется, говорите, что это так), то просто используйте выражение для имен файлов в соединении с плоскими файлами менеджер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...