【问题标题】:Oracle query in SSIS defines wrong data typesSSIS 中的 Oracle 查询定义了错误的数据类型
【发布时间】:2015-05-30 05:59:58
【问题描述】:

我有一个有点复杂的查询,我想将它用作 SSIS 包中的源。我创建了我的 OLE DB 源,将访问模式指定为 SQL,然后将我的查询粘贴到命令文本框中。当我点击预览时,样本数据回来了,一切看起来都很好。

但是,当我尝试运行该程序包时,我得到了“外部列与数据源列不同步”以及“需要从外部列中删除外部列 'xxx'”的错误消息。请注意,在设计模式下,错误列表选项卡中没有条目。

在进行研究时,我发现外部、输出和错误列被自动定义为错误的数据类型。一些明显的整数列被定义为字符串,而另一些则被设置为 unicode 字符串。

我尝试通过高级编辑器手动修复它们,但您似乎无法更改错误列。但是,如果我修复了外部和输出源列,我会收到关于不同步的消息……你想修复它吗?我点击是,它把它放回字符串...

感谢您的任何见解。

【问题讨论】:

标签: ssis-data-flow


【解决方案1】:

您遇到的问题可以通过多种方法之一解决。

首先,如果您尝试使用高级编辑器来更改此设置(我不建议这样做,因为维护人员很难看到您所做的事情),您必须更改外部和输出源列的设置同步。单击“是”时“修复”的是两者之间的不匹配。

其次,您可以将它们全部保留为字符串,并使用数据转换组件转换为您需要的类型。这对未来的维护者来说更容易。

我更喜欢使用 oracle sql 语句在 pl/sql 中设置我需要的类型,以便 SSIS 创建具有正确类型的字段。这允许定义是明确的,因此维护者可以看到做了什么。为此,我使用 sql 查询从目标表的结构构建我的 oracle select 语句(在我构建它的项目中,我们在应用转换之前将所有数据/结构完整地从 Oracle 带入暂存 Sql Server 机器.) https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多