【问题标题】:Stubborn column data type in SSIS flat flat file connection manager won't change. :(SSIS 平面文件连接管理器中的顽固列数据类型不会改变。 :(
【发布时间】:2012-08-02 13:37:05
【问题描述】:

我继承了一个现有的 SSIS 包,它将平面文件数据导入我的 SQL Server 2005 数据库。我需要将“总销售额”列的数据类型从“数字”更改为“货币”。当我更改数据类型并导出包时,数据类型仍然是数字。

我还尝试创建一个新的平面文件连接以在同一个包中使用,但由于某些奇怪的原因,它仍然是数字而不是“cy”货币。我猜在其他一些区域有什么东西“卡住”了,迫使最后一列保持数字?

有人知道更改平面文件数据源的数据类型的技巧吗?

【问题讨论】:

  • 目的地的列类型是什么?我提出这个问题的原因是为什么要担心更改源的数据类型,您的重点是它到达目的地时的数据类型。
  • 目的地的数据类型是decimal(9,2),但是我把它改成了“money”,以允许一些更大的新数据(有人输入了60亿的销售额然后作废了) , 耶!)。我做了一个简单的小测试包来重现错误,发现 SSIS 包由于对平面文件数据的期望而中止。
  • 我使用平面文件已经有一段时间了,您是否尝试过仅进行数据流转换以将其转换为货币。
  • 您创建了一个新的平面文件连接管理器并在平面文件源中切换它,是吗?右键单击从该来源出来的行并选择“查看元数据”(我认为)它是否将类型显示为货币还是保持数字?
  • @billinkc,感谢您的提示!我没有意识到我可以这样查看元数据,我刚开始使用 SSIS。

标签: sql-server sql-server-2005 ssis ssis-data-types


【解决方案1】:

您是否尝试在 DT 中添加数据转换转换任务?

例如您可以将总销售额修改为

Gross Sales, Gross Sales_CONV    Choose Currency [DT_CY] as your currency.

【讨论】:

  • 显然以上只能应用于DT。不知道为什么数据类型在导入过程中没有改变。
【解决方案2】:

感谢大家的帮助。在我的情况下,我似乎需要删除并重新添加平面文件源步骤并添加一个新的平面文件连接管理器。也许有 更好的方法来做到这一点,而我只是在 SSIS 的 GUI 迷宫中按错误的顺序单击。 :D

【讨论】:

    【解决方案3】:

    我还发现有时将 Source 和 Destination 属性上的 ValidateExternalMetaData 更改为 false 会有所帮助。

    【讨论】:

      【解决方案4】:

      当某些更改不适用时,即使没有明显原因导致数据“顽固”并拒绝更改,您也应该尝试关闭 Visual Studio 并重新打开它。 就我而言,它适用于上述故障,以及脚本编辑器无法打开的情况。看起来某些信息保留在缓存中,并阻止某些功能正常工作。 在我的情况下,我的平面文件连接管理器中有很多列,因此删除连接并再次将这些列重新添加是我最后一次尝试。

      【讨论】:

        猜你喜欢
        • 2016-01-27
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 2014-12-27
        • 2023-04-11
        • 2011-07-28
        • 2019-09-11
        • 2016-03-28
        相关资源
        最近更新 更多