-1

我想知道如何做到这一点。

例如:

我有c:/temp/

在这个临时文件夹中,我有各种结构的各种文件和文件夹。

收集 temp 及其子目录中的所有文件名然后将它们插入表中的最简单方法是什么?

我计划表结构会很简单。

它将有:

  1. 首要的关键
  2. 路径和文件名
  3. 创建日期
  4. 修改日期
  5. 删除日期

所以表格看起来像这样:

Key | PathFilename            | Modified   | Created    | Delete       |   
 1  | c:\temp\fil7.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 2  | c:\temp\fi5e.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 3  | c:\temp\1ile.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 4  | c:\temp\2ile.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 5  | c:\temp\3ile.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 6  | c:\temp\file.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 7  | c:\temp\file.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 8  | c:\temp\file.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
 9  | c:\temp\file.txt        | 2013/02/01 | 2013/02/01 | 1900/01/01|
10  | c:\temp\folde1\file.txt | 2013/02/01 | 2013/02/01 | 1900/01/01|
11  | c:\temp\folde2\file.txt | 2013/02/01 | 2013/02/01 | 1900/01/01|
12  | c:\temp\folde4\file.txt | 2013/02/01 | 2013/02/01 | 1900/01/01|
13  | c:\temp\folder\fil5.txt | 2013/02/01 | 2013/02/01 | 1900/01/01|
14  | c:\temp\folder\fil6.txt | 2013/02/01 | 2013/02/01 | 1900/01/01|

我可以通过 SSIS 工作做到这一点吗?或者有没有其他解决方案可以完成这项任务?

有没有关于如何一步一步做到这一点的教程?

谢谢

ps:我有一个 filesystemWatcher vb.net 程序,它将监视任何创建的文件和修改的文件,但是对于初始启动,我想用已经存在的文件填充表。我不知道 filesystemWatcher 是否可以完成这个初始任务?它可以?

4

1 回答 1

1

我将创建一个FolderSourceString 类型的变量,并将其分配给c:\temp.

虽然您可以在一个Script Task控制流上的一个对象中完成所有这些操作,但我将描述如何使用它来完成它,Data Flow Task因为这可能是学习 SSIS 通常如何工作的更好构造。将数据流任务拖到画布上。双击它。

在您的数据流任务中,添加一个脚本组件。我将变量的引用添加FolderSource为只读。在输入和输出中,我将输出缓冲区重命名为 FS 并添加了下面的列。数据类型为 4 字节整数、字符串 255 和日期 (DT_DATE)。

在此处输入图像描述

public override void CreateNewOutputRows()
{
    string src = Variables.FolderSource;
    int key = 1;

    System.IO.FileInfo fileInfo = null;
    foreach (string currentFile in System.IO.Directory.EnumerateFiles(src, "*.*", SearchOption.AllDirectories))
    {
        fileInfo = new FileInfo(currentFile);
        FSBuffer.AddRow();

        FSBuffer.Key = key++;
        FSBuffer.PathFilename = currentFile;

        // Have UTC flavored methods too
        FSBuffer.Created = fileInfo.CreationTime;
        FSBuffer.Modified = fileInfo.LastWriteTime;
        FSBuffer.Delete = new DateTime(1900, 1, 1);
    }
}

这将使数据流向您的数据流。如果您需要对数据任何事情,您现在可以添加各种组件。

处理完数据行后,您需要将它们放在某个地方。有许多可用的目的地,但您可能只想使用该OLE DB Destination组件。将脚本任务的输出或您使用的任何后续任务连接到目标。双击它,这将允许您指定数据库连接、表名和列的映射——按该顺序。

您可能没有定义 OLE DB 连接管理器,因此单击目标中的连接管理器按钮并创建一个新的。创建连接管理器后,您将选择数据应驻留的表。然后在 Columns 选项卡上,将源列(来自脚本组件)映射到目标(表)。

于 2013-11-06T04:01:06.570 回答