使用 SSIS 包将一个字段中的值拆分为两个值,以便在 SQL Server 中的两个不同字段中使用
Posted
技术标签:
【中文标题】使用 SSIS 包将一个字段中的值拆分为两个值,以便在 SQL Server 中的两个不同字段中使用【英文标题】:Spitting Value From One Field Into Two Values to be Used in Two Different Fields in SQL Server Using SSIS Package 【发布时间】:2014-02-20 14:50:05 【问题描述】:我的列中有如下值的字段:
ABCDEFG:1234
我有一个 SSIS 包,需要将此值拆分为两个值,如下所示:
ABCDEFG
1234
ABCDEFG
将被导入 Field1,1234
将被导入 Field2
我在 DataFlow 中的 DerivedColumn1 进程上有以下脚本:
LEFT([PN IN],FINDSTRING([PN IN],":",1))
以及DataFlow中DerivedColumn2进程中的以下脚本:
REPLACE([PN IN],":","")
这给了我以下输出:
ABCDEFG
我的问题是......因为我已经在为这个字段使用派生列,所以它不允许我在我的 DataFlow 中执行另一个 DerivedColumn 进程来提取“:”的RIGHT
给我@ 987654329@...我还要采取什么协议来获取RIGHT
?我可以将它嵌套到一个脚本中吗?
【问题讨论】:
我很困惑:你不能在Data Flow Task
的Derived Column
组件中添加LEFT
作为新列和RIGHT
作为另一个新列吗?它究竟是如何不让你这样做的?
我没有尝试在数据库中创建新列。我正在导入 Excel 报告,这些报告位于报告的一列中,但需要拆分,因为数据库已经具有拆分时应该包含的 2 列
【参考方案1】:
你可以这样拆分它们:
左栏:
SUBSTRING(col1,1,FINDSTRING(col1,":",1) - 1)
右栏:
SUBSTRING(col1,FINDSTRING(col1,":",1) + 1,LEN(col1) - FINDSTRING(col1,":",1))
或者,如果你有SSIS 2012
,你可以使用TOKEN函数
左栏:TOKEN(col1,":",1)
右栏:TOKEN(col1,":",2)
【讨论】:
我可以抓住左边和右边。也许我应该问一个更好的问题。我目前有一个指向“派生列”的“ExcelSource”指向一个“OLE DB 命令”。我的所有变量都映射到我的 ExcelSource 中的列。我的问题出在我的 DataFlow 过程中。 Im 拆分的列需要映射到数据库中的 2 个不同的列。当我的 ExcelSource 中的字段只能映射到我的 OLE DB 命令中的一个变量时,我需要在 DataFlow 流程中采取哪些步骤来获取 LEFT 和 RIGHT 并将它们分别放入数据库中的两个单独的字段中?【参考方案2】:我什至在我的 SSIS 中都没有找到这个 LEFT
函数,但如果你能详细说明它不允许你做什么,也许有人可以帮助你...
【讨论】:
“LEFT”在较新版本的 SSIS 中 我正在尝试做另一个 DerivedColumn 来获取“RIGHT”。但是因为已经有一个 DerivedColumn 抓住了“LEFT”。 RIGHT 现在不存在...如果我尝试在第一个 DerivedColumn 之后执行另一个 DerivedColumn 来获取 RIGHT,它不会让我添加我需要添加的字段。 想了这么多,我只有 2008 R2 正在运行。无论如何,我在屏幕截图中所做的并不会消耗我正在运行的 [LoginName] 列。我必须查看新的 SSIS 才能弄清楚您的列被消耗的原因。也许在两者上都尝试 SUBSTRING?我一直用它来解析讨厌的文本文件。以上是关于使用 SSIS 包将一个字段中的值拆分为两个值,以便在 SQL Server 中的两个不同字段中使用的主要内容,如果未能解决你的问题,请参考以下文章