【问题标题】:SSIS how to build unique filename in ExpressionSSIS如何在表达式中构建唯一的文件名
【发布时间】:2012-05-29 12:18:29
【问题描述】:

我想使用平面文件连接管理器的表达式生成器在 SSIS 中创建随机唯一文件名 - ConnectionString。

应该是:“自定义名称”+“唯一部分”+“csv”

实际上以毫秒为单位的时间戳就可以了。

有什么想法吗?

【问题讨论】:

    标签: ssis filenames


    【解决方案1】:

    我建议你使用表达式设计来做到这一点。

    这里我使用 ExecutionGuid 来生成值。这可能不是最好的主意,因为结果非常大,但您也可以使用日期时间函数来创建您想要的格式:

    【讨论】:

    • 但是如果我想将任何值传递给这个表达式,有可能吗?示例数据流任务中的变量存储“RowCount”。我可以使用表达式生成器将其添加到 FlatFile 标头吗?
    【解决方案2】:

    感谢所有 REPLACE,这有点令人费解,但您可以使用:

    "Custom Name " + SUBSTRING(REPLACE(REPLACE(REPLACE((DT_WSTR, 50)(GETDATE()), "-",""), ".", ""), ":",""), 1, 18)  + ".csv"
    

    作为起点。这将返回:

    Custom Name 20120529 133526359.csv
    

    作为可能的文件名。它不是 100% 保证唯一的,而且它显然不是随机的,但我认为这只是在一个表达式中可以完成的所有事情。或者,您可以使用脚本任务使用 C#/VB.NET 生成更随机的字符串,将其写入变量并在您的表达式中使用该变量。

    【讨论】:

    • 谢谢。我将使用脚本任务,但 Diego 已为我的问题提供了答案。
    【解决方案3】:

    string.Format("Custom name{0}.csv", Path.GetRandomFileName());

    string.Format("Custom name{0}.csv", DateTime.Now.ToString("yyyyMMddhhmmssfff"));

    【讨论】:

      【解决方案4】:

      这将获得唯一的日期时间..

      " + (DT_WSTR, 30)(DT_DBDATE)GETDATE() + "_" + 
          (DT_WSTR, 05) DATEPART("Hh",GETDATE()) + 
          (DT_WSTR, 05) DATEPART("Mi",GETDATE()) + 
          (DT_WSTR, 05) DATEPART("Ss",GETDATE()) +
          ".csv"
      

      【讨论】:

        【解决方案5】:

        我发现很容易找到如何创建表达式,但很难找到有关如何设置输出文件名以使用此表达式的说明。这不是一个简单的过程。这是这个问题的答案。我希望这对某人有所帮助。

        https://blogs.msdn.microsoft.com/sqlgardner/2015/06/18/ssis-tip-using-a-file-path-parameter-for-multiple-flat-files/#comment-1755

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-28
          • 1970-01-01
          相关资源
          最近更新 更多