gpt4 book ai didi

sql-server-2008 - 在 SSIS 中写入目标之前修剪?

转载 作者:行者123 更新时间:2023-12-01 09:38:23 24 4
gpt4 key购买 nike

我有一个数据流,其中有一个数据库源和一个平面文本文件目标(由管道“|”分隔)。数据库源正在从变量中提取 SQL 查询。

问题是,如果我的数据库字段大小,比如名字和姓氏是 30 个字符,我得到的输出为(由点表示的空格)


saurabh…………|库马尔………………

我需要的是要修剪的字段,以便实际输出是

saurabh|kumar

我有超过 40 列要写,我不想在我的 BIG sql 查询的每一列之后手动插入 RTRIM :(

我应该补充一点,源最多可以返回 50,000 行。我正在考虑在两者之间放置一个脚本组件,但处理每一行可能会对性能产生影响。

有什么想法吗?

最佳答案

您有很多选择,但由于您的情况,有些显然是不可取的或不可能做的。

首先,我假设数据中的尾随空格是因为源列的数据类型是 CHAR 或 NCHAR。您可以将源数据库中的数据类型更改为 VARCHAR 或 NVARCHAR。这可能不是一个好主意。

如果源数据中的数据类型是 VARCHAR 或 NVARCHAR 并且数据中有尾随空格,您可以更新数据以删除尾随空格。这可能也不吸引人。

因此,您拥有 SSIS,处理此问题的最佳位置是在数据流中。不幸的是,您必须为每个包含尾随空格的列开发一个解决方案。我认为您不会找到快速简单的“修复所有列”解决方案。

您可以使用脚本转换进行数据修剪,但您必须编写代码才能完成这项工作。或者,您可以使用派生列转换组件。在派生列转换中,您将为需要修剪的每一列添加派生列。例如,您将有一个 firstname 列和一个 lastname 列。派生列值将替换现有列值。

在派生列转换中,您将使用 SSIS 表达式语法来修剪数据。名字和姓氏修剪表达式将是

RTRIM(firstname)
RTRIM(lastname)

派生列转换的性能可能会更好,但它可能与脚本解决方案差别不大。不过,派生列转换以后可能会更容易阅读和理解。

关于sql-server-2008 - 在 SSIS 中写入目标之前修剪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3838228/

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