使用SSIS加载不同语言的Excel文件

时间:2013-04-15 11:42:08

标签: sql-server tsql ssis

我有86个国家/地区,每个国家/地区都有一个文件夹放在CountryFolder中:例如

C:\Users\Countries\Algeria

在每个国家/地区文件夹中都有该国家/地区语言的Excel工作表:

C:\Users\Countries\Algeria\Excel Sheet.xlsx

我有一个ForEach循环包,它遍历从Excel表格中提取数据的所有国家/地区。这些表格的格式相同,但使用的语言不同。 我的SSIS包运行在将表单加载到数据库的所有英国国家/地区,但是当它到达西班牙语和其他非英语国家时会抛出错误,因为它使用列名来映射。表列名称为英语,因此它们与非英语国家/地区的Excel列名称不匹配

1 个答案:

答案 0 :(得分:0)

我假设您有一个ForEach循环来迭代folder。在ForEach Loop内部使用FileSystem任务将特定文件复制到其他位置。然后使用帮助Script task读取原始Excel文件并将列标题更改为英文名称,以便Data Flow Task适用于所有具有不同langauages

的Excel
 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

处理文件

包装设计: -

enter image description here

通过这种方式,您可以reuse现有的数据流任务