【问题标题】:How to load specific Field in Excel with SSIS如何使用 SSIS 在 Excel 中加载特定字段
【发布时间】:2017-12-13 20:14:26
【问题描述】:

我有一个包含 2 张工作表的 Excel 工作簿:testdata1testdata2

一张sheet的数据是这样的:

如您所见,average Testsortnumber 等某些列标题与其他列标题(testvalue1testvalue2..)不在同一行

我想将 Sheets testdata1testdata2 的数据加载到 SQL Server 中的表中。

预期输出

我希望看到的结果是这样的

你能帮我怎么做吗?

excel data Link

【问题讨论】:

  • 事先在 Excel 中格式化数据会更容易,但您可以在源配置中选择“跳过 X 行数”选项来处理此问题。您需要对列“名称”进行硬编码,因为您的某些列是空白的,只是不要单击“第一行中的列名称”选项,您应该能够指定。
  • 现在无法返回编辑,但我查看了 Excel 源代码,然后意识到我正在考虑平面文件源代码。因此,除非您想先将文件保存为 csv 或制表符分隔,否则 Hadi 的解决方案可能是最好的。

标签: sql-server excel ssis etl


【解决方案1】:

您必须创建一个从标题后的第一行读取的动态SQL command,并按照以下步骤修复Excel Source 中的列名称:

  1. 在导入数据的数据流任务前添加脚本任务
  2. 您必须使用脚本任务打开excel文件并获取工作表名称和标题行
  3. 构建查询并将其存储在变量中
  4. 在第二个数据流任务中,您必须使用上面存储的查询作为源(请注意,您必须将 Delay Validation 属性设置为 true

您可以关注我的回答Importing excel files having variable headers - 这是一个类似的案例 - 以获取更多详细信息。

【讨论】:

  • 嗨哈迪,非常感谢。其实我对 SSIS 不是很好,你有关于截图的介绍吗?你会非常好
  • @phalondon 如果您阅读了可能回答@@stackoverflow.com/questions/47437513/… 的第一行,它说you have to read @DrHouseofSQL answer first then @BHouse answer then continue with this answer,它们包含屏幕截图。
  • @phalondon 如果您仍然需要帮助,今天我无法通过屏幕截图提供详细的逐步答案,我真的很抱歉,但我可以在明天提供
  • 谢谢哈迪,你很好。你的截图对我有很大帮助。实际上我正在学习 SSIS,我看到了一些基本视频如何在 SSIS 中加载 Excel。但是这个 Excel 文件对我来说很复杂。在我的真实数据中,有 20 张具有相同数据结构的工作表。我有测试数据,如果你想要我可以通过电子邮件发送给你
  • @phalondon 我认为您提供的屏幕截图已经足够了,但如果您的数据不是机密的,您可以将它们上传到云端并提供链接,以便您也可以得到其他人的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
相关资源
最近更新 更多