Sql server 使用SSIS加载不同语言的Excel文件
我有86个国家,每个国家都有一个文件夹放在CountryFolder中:例如Sql server 使用SSIS加载不同语言的Excel文件,sql-server,tsql,ssis,Sql Server,Tsql,Ssis,我有86个国家,每个国家都有一个文件夹放在CountryFolder中:例如 C:\Users\Countries\Algeria 在每个国家/地区文件夹中,都有一张该国语言的Excel表格: C:\Users\Countries\Algeria\Excel Sheet.xlsx 我有一个ForEach循环包,它遍历所有国家,从Excel表格中提取数据。这些工作表的格式相同,但语言不同。 我的SSIS包运行于所有将图纸加载到数据库中的英国国家,但在加载到西班牙语和其他非英语国家时会抛出一个错
C:\Users\Countries\Algeria
在每个国家/地区文件夹中,都有一张该国语言的Excel表格:
C:\Users\Countries\Algeria\Excel Sheet.xlsx
我有一个ForEach循环包,它遍历所有国家,从Excel表格中提取数据。这些工作表的格式相同,但语言不同。
我的SSIS包运行于所有将图纸加载到数据库中的英国国家,但在加载到西班牙语和其他非英语国家时会抛出一个错误,因为它使用列名进行映射。表列名是英文的,因此它们与非英语国家的Excel列名不匹配我假设您有一个
ForEach
循环来迭代文件夹
。在ForEach循环中
使用文件系统
任务将特定文件复制到不同的位置。然后在脚本的帮助下任务
读取原始Excel文件,并将列HEDER更改为英文名称,以便您的数据流任务
适用于所有具有不同语言的Excel
ConnString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;
Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"
,@ForEachVariable);
注意:@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
包装设计:-
通过这种方式,您可以重用现有的数据流任务