【问题标题】:SSIS - How to dynamically pick a csv file from a folder based on timestamp in the file nameSSIS - 如何根据文件名中的时间戳从文件夹中动态选择 csv 文件
【发布时间】:2021-08-16 02:06:59
【问题描述】:

我需要将 csv 文件从源文件夹移动到目标文件夹。下面是要拾取和移动的文件的命名格式。

Report_File_CSV_MMDDYYY.csv

我必须选择以“Report_File_CSV_”开头的文件,MMDDYYY 是动态部分。不同日期可以有多个文件,我必须根据最新日期选择文件。此外,还有其他 Excel 文件我必须忽略并选择提到的文件。

如果解决方案已经在某个地方,任何指针都将受到高度赞赏。

我几周后才开始使用 SSIS 包。我有 6 个月的 SQL Server 使用经验。

在此先感谢您的欢呼。

【问题讨论】:

  • 您喜欢使用哪种语言或工具?
  • 只需读取文件然后对其进行排序并计算出哪个具有更高的YYY,然后具有最高的MM,然后是DD,例如:Dim Files As String() = Directory.GetFiles(folderBase + "\files", "*.csv") System.Array.Sort(Of String)(Files)
  • @AnkurBajaj - SSIS 以前只支持 VB.Net,现在是否支持其他语言?
  • 我可以编写基本的.net @AnkurBajaj

标签: sql ssis file-transfer


【解决方案1】:

我刚刚使用 LINQ 使用 C# 回答了一个类似的问题。

string file = new System.IO.DirectoryInfo(@"C:\path").GetFiles()
                   .Where(e => e.Extension.EndsWith("csv"))
                   .Where(s => s.Name.StartsWith("Report_File_CSV_"))
                   .OrderByDescending(d => 
                          d.Name.Substring(d.Name.Length - 3,3) + //YYY part
                          d.Name.Substring(d.Name.Length - 7,4) //MMDD part
                                      )
                   .Select(f => f.FullName)
                   .FirstOrDefault();

另一个答案:SSIS - Loop through text files sorted in creation order and process each record on each file as an update or an insert into a SQL Table

按文件创建日期排序,这也可能对您有用。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多