ssis-将单个字符串拆分为多个列

时间:2016-08-16 17:15:48

标签: ssis ssis-2012

我有一个看起来像

的字符串

" V" :{" cns":" AQRV3Z"," elapsed-ms":" 1"," key-hash" :" 377515780""密钥大小-b":" 116""加载时-MS":" 250& #34;"下限-MS":" 20""结果":"完成""值 - 大小-b":" 3124"}

我想分开" load-time-ms"和"结果"在col1-load time和col2- results两个新列中,这些列将填充相应的值。

我有点陷入子串fucntion。 任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

第一个解决方案: SOURCE sql命令中的TSQL。 我使用临时表,请相应更改表名。经过测试,在SSIS中完美运行。 :)

--create table structure
create table #test (strg varchar(1000))
go


--insert into sample data
insert #test values ('"v" : {"cns":"AQRV3Z","elapsed-ms":"1","key-hash":"377515780","key-size-b":"116","load-time-ms":"250","lower-bound-ms":"20","outcome":"done","value-size-b":"3124"}')


--below is solution for the data source
select substring(   strg,
                    charindex('"load-time-ms"',strg)+len('"load-time-ms"')+2,
                    charindex(  '"',
                                substring(  strg, 
                                            charindex('"load-time-ms"',strg)+len('"load-time-ms"')+2,
                                            len(strg)))-1) as [col1-load time],
       substring(   strg,
                    charindex('"outcome"',strg)+len('"outcome"')+2,
                    charindex(  '"',
                                substring(  strg, 
                                            charindex('"outcome"',strg)+len('"outcome"')+2,
                                            len(strg)))-1) as [col2-outcome]
from #test

<强>结果:

在SSMS中:

enter image description here

在SSIS中:

enter image description here

enter image description here

enter image description here

第二个解决方案: SSIS中的派生列经过测试,效果很好。 :)

COL1-加载时

SUBSTRING(strg,FINDSTRING(strg,"\"load-time-ms\"",1) + LEN("\"load-time-ms\"") + 2,FINDSTRING(SUBSTRING(strg,FINDSTRING(strg,"\"load-time-ms\"",1) + LEN("\"load-time-ms\"") + 2,LEN(strg)),"\"",1) - 1)

COL2-结果

SUBSTRING(strg,FINDSTRING(strg,"\"outcome\"",1) + LEN("\"outcome\"") + 2,FINDSTRING(SUBSTRING(strg,FINDSTRING(strg,"\"outcome\"",1) + LEN("\"outcome\"") + 2,LEN(strg)),"\"",1) - 1)