将具有不同架构的多个 Excel 文件加载到 SQL Server
Posted
技术标签:
【中文标题】将具有不同架构的多个 Excel 文件加载到 SQL Server【英文标题】:Load multiple Excel files with different schema to SQL Server 【发布时间】:2017-11-30 08:39:16 【问题描述】:我有大约 30000 个包含销售数据的 Excel 文件,但架构不同(一个有一个名为 “产品名称” 的列,另一个只有 “产品”)但是包含有关来自不同商店的销售的相同信息。这些文件是由某些人手动生成的,因此也可能出现拼写错误。有没有什么好的方法可以导入这些数据,或者我必须在 SSIS 中创建 300 个 ETL 包?
【问题讨论】:
那么,列数和列的顺序会一样吗? 从战略上讲,我会 1) 扫描所有文件并将所有列名提取到表中 2) 为源 col name target (=schema) col name 构建字典 3) 使用 col 导入所有文件名称翻译表 @JayasuryaSatheesh 不。问题是文件可以有完全不同的模式,一个商店可以在一个文件中发送销售和采购,不同的工作表和另一个可以在 2 个文件中发送。 Mikolaj 看看我对这个话题的回答***.com/questions/47437513/… @KeithL 我就是那个初级的人:D 【参考方案1】:您可以在这些步骤中做到这一点
获取所有excel文件 对于每个文件获取列名和工作表名的脚本任务
在 ssis 中存储列名和工作表名 变量
编辑:你不能轻易对错别字做任何事情,我能做的最简单的事情就是准备一个字典表来存放期望值和一个模糊匹配转换检查字典表
对于每张纸
如果暂存表不存在则创建 SQL 任务
脚本任务从 Excel 工作表中读取并插入到表格中
而且很容易找到如何使用 c# 动态读取 excel 文件的列名。我用 vb 做了类似的事情,但下面是一个如何用 c# 做的例子。
工作表名称
Using Excel OleDb to get sheet names IN SHEET ORDER列名
Get column names from excel file of a specific sheet using c# with OleDbConnection此外,这家伙正在使用开箱即用的 ssis excel 数据流动态加载所有文件
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/53f08f44-e996-48ca-9f72-b7dfc5d9136b/import-different-excel-file-with-different-schema-to-different-table-in-sql-server?forum=sqlintegrationservices要创建表,您需要创建 SQL 语句来创建表,然后创建 SQL 语句以插入到您创建的表中。
【讨论】:
谢谢,我下周试试,然后贴在这里:)以上是关于将具有不同架构的多个 Excel 文件加载到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 dask/fastparquet 从多个目录中读取多个 parquet 文件(具有相同架构)
将具有不同架构(列)的多个文件 (.csv) 合并/合并为单个文件 .csv - Azure 数据工厂
SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡