简体   繁体   English

使用SSIS将动态Excel工作表加载到SQL中

[英]Dynamic Excel Sheets load into SQL using SSIS

I'm trying to load multiple excel format files (.xlsx) into sql. 我正在尝试将多个Excel格式文件(.xlsx)加载到sql中。 I have set up my package as followed. 我已经按照以下步骤设置了我的包裹。 My excel files name and sheet name will change daily 我的Excel文件名称和工作表名称每天都会更改

File name: PROD File Tracking 02-10.xlsx - Month and Day change daily
Sheet name: 2-10$ -- month and day change daily

Package Structure 包装结构

For each Loop Container -> Data Flow Task -> Excel Source -> OLE DB Destination

Variables Values 变量值

  1. FileName: Z:\\Users\\darsftp\\BDS\\GBRTest\\PROD File Tracking 02-10.xlsx 文件名: Z:\\Users\\darsftp\\BDS\\GBRTest\\PROD File Tracking 02-10.xlsx
  2. FolderPath: Z:\\Users\\darsftp\\BDS\\GBRTest FolderPath: Z:\\Users\\darsftp\\BDS\\GBRTest
  3. ExtProperties: "Excel 12.0;HDR=Yes" ExtProperties: "Excel 12.0;HDR=Yes"

Need Help 需要帮忙

To dynamically pick up file daily with a dynamic sheet name. 每天使用动态工作表名称动态获取文件。

I know how to pick up files with a dynamic file name but not with a dynamic sheet name. 我知道如何使用动态文件名而不是动态工作表名来拾取文件。 That's where I'm having the issue. 那就是我遇到的问题。

Create a new variable Sheetname and Set it's property Evaluate as expression to True and use the following expression: 创建一个新变量Sheetname并将其属性设置为Evaluate as expressionTrue并使用以下表达式:

REPLACE(SUBSTRING(@[User::Filename],FINDSTRING(@[User::Filename],"PROD File Tracking", 1 ) + LEN("PROD File Tracking"),100),".xlsx","") + "$"

So if your Filename variable value its Z:\\Users\\darsftp\\BDS\\GBRTest\\PROD File Tracking 02-10.xlsx so Sheetname variable value will be 02-10$ wich is the sheetname. 因此,如果您的Filename变量值是Z:\\Users\\darsftp\\BDS\\GBRTest\\PROD File Tracking 02-10.xlsx那么Sheetname变量值将为02-10$这是工作表名称。

And in your Excel Source read the sheetname from variable Sheetname 并在您的Excel Source中从变量Sheetname读取工作表Sheetname

Side note: Excel sheetname always end with $ sign (it doesn't appear in excel) 旁注:Excel工作表名称始终以$符号结尾(在Excel中不显示)

Read more about variable and expressions in this article 本文中阅读有关变量和表达式的更多信息

EDIT 1 编辑1

You have to add an expression the the Excel connection manager connection string property: 您必须在Excel connection manager连接字符串属性中添加一个表达式:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ @[User::Filename] + ";Extended Properties=\"Excel 12.0;HDR=YES\";"

Set DelayValidation property of Data Flow task to True. 将数据流任务的DelayValidation属性设置为True。

Usefull Links 有用的链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM