【问题标题】:How to find the Flat file which is currently updating record into it如何找到当前正在将记录更新到其中的平面文件
【发布时间】:2015-09-15 10:09:03
【问题描述】:

在 SSIS 中 在一个文件夹中有许多平面文件,通过使用每个循环容器,我们将一个一个地处理它。如果文件夹中放置了任何新文件并且仍处于复制模式。那么,我们不应该把它作为继续过程。我们应该仅将完全复制的文件单独处理到我们的下一个过程。

我们怎样才能做到这一点?请提出您的建议。

【问题讨论】:

  • 在执行 SQL 任务中使用 GetDate() 来存储运行开始时的日期时间。如果正在读取的任何文件的创建日期时间大于您存储的值,则不要处理它们。您可以使用数据流中的条件拆分或控制流中的脚本元素来做到这一点
  • 谢谢 MiguelH。但是我们如何才能获得文本文件的创建日期时间。有什么想法吗?
  • 这是一篇有用的文章,我以前使用过从平面文件中获取更新日期 [link]microsoft-ssis.blogspot.co.uk/2011/03/…
  • 可能与您的问题更相关的是这个 [link]sqlservercentral.com/blogs/tim_mitchell/2010/8/23/…

标签: sql-server-2008 ssis sql-server-2012 ssis-2012 ssis-2008


【解决方案1】:

我过去这样做的最佳方法是使用 C# 脚本任务并尝试打开文件 - 如果文件仍在被复制,您将收到错误(您会捕获)。然后,您可以设置一个布尔变量,如果 Open 有效,则有条件地处理文件。

例如: 布尔 b = true;

        FileStream f;

        try
        {
            f = new FileStream("C:\\Test\\Test.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.None);
        }
        catch (IOException e)
        {
            if (e.Message == "hello")
            {
                b = false;
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2013-06-10
    • 1970-01-01
    相关资源
    最近更新 更多