我有86个国家/地区,每个国家/地区都有一个文件夹放在CountryFolder中:例如
C:\Users\Countries\Algeria
在每个国家/地区文件夹中都有该国家/地区语言的Excel工作表:
C:\Users\Countries\Algeria\Excel Sheet.xlsx
我有一个ForEach循环包,它遍历从Excel表格中提取数据的所有国家/地区。这些表格的格式相同,但使用的语言不同。 我的SSIS包运行在将表单加载到数据库的所有英国国家/地区,但是当它到达西班牙语和其他非英语国家时会抛出错误,因为它使用列名来映射。表列名称为英语,因此它们与非英语国家/地区的Excel列名称不匹配
答案 0 :(得分:0)
我假设您有一个ForEach
循环来迭代folder
。在ForEach Loop
内部使用FileSystem
任务将特定文件复制到其他位置。然后使用帮助Script task
读取原始Excel文件并将列标题更改为英文名称,以便Data Flow Task
适用于所有具有不同langauages
ConnString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;
Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"
,@ForEachVariable);
Note :@ForEachVariable
包含ForEach
循环
//open the connection
OleDbCommand query =
new OleDbCommand("SELECT * FROM ["xlWorksheet"$]", objConn);
//popluate the Datetable and get the column names using
dt.Columns[0].ColumnName
获取列名后,在Excel中将其更改为英文名称,然后使用DFT
包装设计: -
通过这种方式,您可以reuse
现有的数据流任务