需求:从数据库获取数据,写进xls 文件,要求文件名称根据当天日期动态生成,并将两种数据分别写入两个sheet。
步骤一:使用“执行SQL任务”组件创建xls文件。
先随便创建个xls文件,根据需要重命名sheet页,后续用。
双击执行SQL任务组件,connectType选择“EXCEL”。 connection 选择刚才创建的xls文件。SQLStament如下
create table `order`( `预定日期` NVARCHAR(255), `订单编号` NVARCHAR(255), `预定时间` NVARCHAR(255), `用户id` NVARCHAR(255), `用户账号` NVARCHAR(255), `用户手机` NVARCHAR(255), )
order就是sheet名。 感觉很神奇,SSIS可以把EXCEL当成类似数据库一样处理。不过如果把EXCEL换成ACCESS,应该更好理解了吧。注意如果字段是汉字的,要用 ··进行标识。
此时生成了 。
步骤二:编辑EXCEL连接管理器,将文件名称动态化。
右键Excel连接管理器-》属性 ,expression ,将ExcelFilePath 设置成表达式 “"E:\\ETL\\name"+ (DT_STR,4,1252) DatePart("yyyy",getdate()) +"_"+Right("0" + (DT_STR,4,1252) DatePart("m",getdate()),2) +"_"+Right("0" + (DT_STR,4,1252) DatePart("d",getdate()),2) +".xls"”
注意将 DelayValidation 设置成 True,延迟校验,否则会报错文件不存在之类的。
步骤三:创建数据流任务 ,从数据库中抽取数据,写入Excel 指定sheet,Excle连接管理器复用上面的。