SSIS 系列 - SSIS 电子表格 处理 正则表达式 LINQ

 

配套视频:

 

链接:https://pan.baidu.com/s/1WOEvesIUK2Hi4KB_-YJUKA 
提取码:pdbq

场景 

用户在共享路径存放一个每月销售情况的电子表格,需要系统导入表中.  文件名  "月销售_201902.xlsx"   

 

设计  

电子表格->直接写到到staging表, 再通过到ODS 表.  当成数据库两张表,一个张直接插入,一张表可能需要处理.

 

 具体包步聚 

 


 

1.日志开始

2.清空staging表

2.获得文件 (文件路径赋值给一个变量,
通过判断变量是否为空)

3.归档文件

4.加载文件至数据库Stg表

5.通过T-SQL从stg->ods

6.日志结束

 

 

 

 

 

 

 

 

 

 

 

1.LINQ 的用法

假设,文件夹是 D:\tmp\excel\Sales, 如何获得最新的一个电子表格

 

            var  ExcelFolder=   Dts.Variables["v_Folder"].Value.ToString();
            var ExcelRgex = Dts.Variables["v_FileRegex"].Value.ToString();
            var FolderInfo = new DirectoryInfo(ExcelFolder);

            var fileinfo = FolderInfo.GetFiles().Where(e => Regex.IsMatch(e.Name, ExcelRgex) && e.Extension.ToLower() == ".xlsx").OrderByDescending(e => e.FullName).FirstOrDefault();

            if (fileinfo != null)
            {
                Dts.Variables["v_FilePath"].Value = fileinfo.FullName;               

            }

 

 其中

  var fileinfo = FolderInfo.GetFiles().Where(e => Regex.IsMatch(e.Name, ExcelRgex) && e.Extension.ToLower() == ".xlsx").OrderByDescending(e => e.FullName).FirstOrDefault();

  就是获得指定目录  根据linq 表达式,找到可以 正则表式 含"月销售",并且扩展名是.xlsx"  按名字顺序降序排,取第一个

 

 其实 转成T-SQL类似于

 

 select top 1 * from 目录的所有文件 a 

where   a.Name like '%月销售%'  and lower(e.extendion)='.xlsx'

order by e.fullname desc 

 

2.Excel   路径需要设置成一个变量,因为每一次可能文件名不一样.

 

 源码  

 Barry_BI(电子表格).zip

posted @ 2019-06-29 22:09  曾新文  阅读(297)  评论(0编辑  收藏  举报