DTS og pivot tabeller
HejJeg har en DTS pakke i SQL Server 2000 som importerer en tekstfil ind i en tabel - importen er et "deltaload" hvor nogle få tusinde rækker indlæses, konverteres og tilføjes en tabel med flere millioner rækker.
I tekstfilen findes et felt med "gentagne" værdier som jeg skal have pivoteret og lagt over i en separat tabel. Der er ikke samme antal gentagne værdier i hver række og jeg behandler dem alligevel via en ActiceX transform.
Ex på tekstfil:
"1","yyy aaa bbb",bla,bla,bla,
"2","bbb ccc ddd eee fff",bla,bla,,
"3","uuu aaa",bla,bla,bla,bla
Over i tabel A på SQL Server
1,"yyy aaa bbb",bla,bla,bla,
2,"bbb ccc ddd eee fff",bla,bla,,
3,"uuu aaa",bla,bla,bla,bla
og i tabel B på SQL Server
1,"yyy"
1,"aaa"
1,"bbb"
2,"bbb"
2,"ccc"
2,"ddd"
2,"eee"
2,"fff"
3,"uuu"
3,"aaa"
Det er et krav at pivoteringen sker direkte i DTS pakken i forbindelse med importen og ikke ved at bearbejde tabellen med mange millioner records efterfølgende (og ej heller ved at indføje en ekstra staging tabel og loope gennem den - en sådan løsning er nem nok at kode).
DTS pakken består af en connection af typen "DTSflatfile" til indlæsning af tekstfilen, et transformer stage til konvertering/fortolkning (inkl. noget lookup) og så et alm. sqloledb connection for at få data ind i databasen.
Så hvordan koder jeg et "ekstra" transformer stage som jeg kan koble på de to eksisterende connections - og som håndterer pivoteringen når der er forskelligt antal gentagne værdier i hver række?
(Måske kunne udgangspunktet være et ActiveXtransform script som laver en split af min tekststreng a la
sub Main()
Dim A
A = split (DTSsource("kol2")," ")
' A indeholde nu array med værdier
?!?
end sub
Men så skal jeg på en eller anden måde have indsat hver værdi af A i sin egen række i DTSdestination - og det kan jeg ikke finde ud af... )