【问题标题】:How to load Flat files to SQL Server Tables according to the Name of Flat File?如何根据平面文件的名称将平面文件加载到 SQL Server 表中?
【发布时间】:2019-07-19 21:38:08
【问题描述】:

有数百个平面文件

  • 对于每个文件,我需要在 SQL-server 中创建一个表并将文件内容输入到表中

    example :
    Flat_Files:             SQL-SERVER Table:
    FileA.txt               fileA
    FileB.txt               fileB
    FileC.txt               fileC  
    ... and so on.
    

如何在 SSIS 中实现这一点。

Ps:我是这一切的初学者。

【问题讨论】:

  • 到目前为止您尝试了哪些方法,您是从哪里开始卡住的?
  • ForEach 项目枚举器,一些例子: - sqlerudition.com/… 和另一个 - codeproject.com/Tips/803195/Foreach-File-Enumerator-in-SSIS
  • @Larnu 我尝试使用 ForEachLoop 容器
  • 这是个问题。您如何建议 SSIS “解决”您所有列的数据类型? CSV 文件是文本文件,它们没有数据类型,但这并不意味着您的数据应该全部存储为文本。这听起来更像是您需要先设计数据库,然后再导入数据。 SSIS 不会在设计阶段为您提供帮助。
  • 不,如果列不同,它们没有静态定义。如果要使用 SSIS,则需要为每个文件构建单独的流程。就像我说的,SSIS 不支持动态定义;它们必须是静态的。

标签: sql-server ssis etl flatfilesource


【解决方案1】:

尝试在脚本任务中使用动态 SQL。 对于每个文件(使用 for-each 循环容器)获取标题和文件名以创建一个表,然后使用动态 SQL 将数据插入该表。

这应该是你最后的选择。

如果所有文件都是 .xlsx,您可以使用 ExecuteSQL Task 执行此操作。

【讨论】:

  • 虽然这是解决问题的好方法,但您会遇到为每列动态定义数据类型的问题。
  • 我认为没有一个简单的解决方案可以为 100 个文件定义列数据类型。唯一的选择是将所有列数据类型设置为 nvarchar。
猜你喜欢
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2015-10-03
  • 2016-07-11
  • 2023-03-12
相关资源
最近更新 更多