【问题标题】:Load multiple Excel files with different schema to SQL Server将具有不同架构的多个 Excel 文件加载到 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 看看我对这个话题的回答stackoverflow.com/questions/47437513/…
  • @KeithL 我就是那个初级的人:D

标签: sql sql-server excel ssis etl


【解决方案1】:

您可以在这些步骤中做到这一点

  • 获取所有excel文件
  • 对于每个文件
  • 获取列名和工作表名的脚本任务

  • 在 ssis 中存储列名和工作表名 变量

编辑:你不能轻易对错别字做任何事情,我能做的最简单的事情就是准备一个字典表来存放期望值和一个模糊匹配转换检查字典表

  • 对于每张纸

  • 如果暂存表不存在则创建 SQL 任务

  • 脚本任务从 Excel 工作表中读取并插入到表格中

而且很容易找到如何使用 c# 动态读取 excel 文件的列名。我用 vb 做了类似的事情,但下面是一个如何用 c# 做的例子。

工作表名称

列名

此外,这家伙正在使用开箱即用的 ssis excel 数据流动态加载所有文件

要创建表,您需要创建 SQL 语句来创建表,然后创建 SQL 语句以插入到您创建的表中。

【讨论】:

  • 谢谢,我下周试试,然后贴在这里:)
猜你喜欢
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多