gpt4 book ai didi

ssis - BIML:有关 varchar > 255 的 ODBC 源列上数据类型处理的问题

转载 作者:行者123 更新时间:2023-12-05 03:28:53 24 4
gpt4 key购买 nike

我刚刚接触 BIML 并编写了一些脚本来创建一些 DTSX 包。一般来说,大多数事情都在起作用。但有一件事让我发疯。

我有一个 ODBC 源 (PostgreSQL)。从那里我使用 ODBC 源从表中获取数据。该表有一个文本列(列的名称是“描述”)。我在 ODBC-Source 的查询中将此列转换为 varchar(4000)(我知道会有截断,但没关系)。如果我在 Visual Studio 中手动执行此操作,ODBC 源的高级编辑器将显示“Unicode 字符串 [DT_WSTR]”,外部列和输出列的长度均为 4000。所以一切都很好。但是,如果我用 BIML 做同样的事情并生成 SSIS 包,外部列仍会显示长度为 4000 的“Unicode 字符串 [DT_WSTR]”,但输出列会显示“Unicode 文本流 [DT_NTEXT]” .因此,BIML 完成的映射不同于 SSIS(手动)完成的映射。这会导致两件事(警告):

  1. 关于元数据已更改且应同步的警告
  2. 还有一条警告,指出源使用 LOB-Columns 并通过 Row-Fetch 设置为 Row..

这两个警告都不酷。但是第二个也会导致性能急剧下降!如果我将转换设置为 varchar(255),则映射很好(外部列和输出列然后是“Unicode 字符串 [DT_WSTR]”,长度为 255)。但是一旦我走得更高,就像 varchar(256) 它在输出中再次被视为 [DT_NTEXT]。

我能做些什么吗?我在 BIML 评估中投入了数天时间,发现生活质量有很多提高,但这个问题正在扼杀它。如果我必须在每次构建后手动更正 BIML 的错误,这就违背了 BIML 的目的。

有谁知道我该如何解决这个问题?外部列和输出列之间的正确自动映射会很棒,但至少可以选择自己定义映射。

感谢任何帮助!

问候语马可

编辑 根据要求提供一个最小示例以便更好地理解:

  • ODBC 源 (Postegres) 中的列具有“文本”类型(列名:描述)
  • 我使用此查询 (DirectInput) 在 ODBC 源中选择它: SELECT description::varchar(4000) from mySourceTable
  • Biml 中的 ODBC 源代码如下所示: <OdbcSource Name="mySource" Connection="mySourceConnection"> <DirectInput>SELECT description::varchar(4000) from mySourceTable</DirectInput></OdbcSource>
  • 如果我现在生成 dtsx-Package,ODBC-Source 会抛出上述警告以及上述外部和输出列的数据类型

最佳答案

在我从另一个方向得到答案之前在评论中提到:

您必须在 BIML 的 ODBC 源中使用 DataflowOverrides。对于我的示例,您必须执行以下操作:

`<OdbcSource Name="mySource" Connection="mySourceConnection">
<DirectInput>SELECT description::varchar(4000) from mySourceTable</DirectInput>
<DataflowOverrides>
<OutputPath OutputPathName="Output">
<Columns>
<Column ColumnName="description" SsisDataTypeOverride="DT_WSTR" DataType="String" Length="4000" />
</Columns>
</OutputPath>
<OutputPath OutputPathName="Error">
<Columns>
<Column ColumnName="description" SsisDataTypeOverride="DT_WSTR" DataType="String" Length="4000" />
</Columns>
</OutputPath>
</DataflowOverrides>
</OdbcSource>`

您不必对所有列进行覆盖,只需对您有映射问题的列进行覆盖。

希望这个解决方案可以帮助路过的人。

干杯

关于ssis - BIML:有关 varchar > 255 的 ODBC 源列上数据类型处理的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71162537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com