插入多个文本文件
Posted
技术标签:
【中文标题】插入多个文本文件【英文标题】:inserting multiple text files 【发布时间】:2017-01-27 16:03:40 【问题描述】:我有 4 个不同的文本文件,每个文件具有不同的名称和不同的列,放在一个文件夹中。我希望将这 4 个四个文件插入或更新到 4 个不同的现有表中。那么如何在 SSIS 中动态读取读取这 4 个文件并将它们动态插入到各自的表中。
【问题讨论】:
【参考方案1】:嗯,您需要使用 数据流任务 将数据从 平面文件源 移动到表目标(可能是 OLEDB 目标) .文件中的列是否以任何方式分隔?例如,使用以下任何一种:(;),(|) 或类似的东西?如果是,您可以创建一个 FlatFileConnectionManager 并将其设置为拆分列。如果没有,您可能需要使用 FixedWidth 选项来分隔列。要使用 OLEDB 目标,您需要创建一个 OLEDB 连接管理器 以指向数据库中的表。如果我有更多关于您要从中读取数据的文件的信息,我可以为您提供更多帮助。
编辑
您在开始时说过您正在使用 4 个文件和 4 个表,因此您可以创建 4 个具有 4 个 OLEDB 目标的平面目标源(每个平面文件各 1 个)。如果我理解正确的话,这 4 个文件可能存在也可能不存在。因此,如果您知道文件将获得的名称,请将 Package Property DelayValidation 更改为 true,然后创建与示例文本文件的连接。您这样做是为了保存文件路径。在我看来,这些表确实需要存在。现在,当你说:
只要文件夹中有文件,我想将所有文本文件加载到每个不同的现有表中。
我知道你可以做类似事情的唯一方法是使用 SQL Server 代理作业安排在特定时间执行你的包。如果这就是您要找的,请告诉我。
【讨论】:
是的,文本文件是分隔的。我想创建一个包来一次将所有这些分隔的文本文件加载到不同的表中,然后将文件归档到不同的位置 @Jason312 好的。就像我说的你需要使用数据流任务,在里面只需拖动 FlatFileSource 并建立一个 connectionMannager 到它,对 OLEDB 目的地做同样的事情。我建议创建一个与您要插入的 4 个列之一具有相同列的表。 You will find this tutorial very useful 我是 ssis 新手,但您的方式只是简单的平面文件输入。我这个项目的目的是自动化这个过程。每当文件夹中有文件时,我想将所有文本文件加载到每个不同的现有表中。例如 A 文本文件到 A 表,B 文本文件到 B 表等。我尝试使用 foreachloop 但它只去同一个目的地。如何使目的地动态化,并且由于某些记录重复,如何使用查找功能来连接这些任务? 好的,我想我明白了,我要编辑我的答案以上是关于插入多个文本文件的主要内容,如果未能解决你的问题,请参考以下文章