23. maj 2002 - 11:59Der er
11 kommentarer og 1 løsning
HJÆLP!!! Splitte en record fra en tabel til anden tabel
Er der nogen der ved eller har oplysninger om, hvordan man løser følgende problem. Jeg får lagt nogle komma adskilte record ind på min MS SQL server i en bestemt tabel. Denne tabel har kun en kolonne. Disse record skal så kopieres over i en anden tabel med flere kolonner.
Den komma adskilte tabel record med en kolonne: Felt1 ”3125220”,”3”,”3331”,”Ordre 365243” ”3125221”,”3”,”4537”,”Ordre 365244”
Tabellen som der skal modtage filen med fire kolonner: Felt1 Felt2 Felt3 Felt3 3125220 3 3331 Ordre 365243 3125221 3 4537 Ordre 365244
Da jeg ikke har den store erfaring med SQL server, ville det være en stor hjælp om nogen kunne forklare hvordan man gør, eller oplyse mig om hvor jeg kunne få oplysninger om hvordan.
hvis vi taler DTS er der en wizard i Enterprise manageren! Stil dig på den tabel du vil importere til, højreklik, vælg "all tasks", og vælg dernæst import data - en wizard starter dernæst - følg den og tilpas den til dit dataformat
umiddelbart ville jeg vælge at lave en DTS pakke som importerer direkte fra din .txt fil over i den endelige tabel (den med det korrekte antal kolonner!!).
De komma adskilte filer bliver automatisk lagt op i tabellen på SQL-serveren, derfor er der kun mulighed for at hente dataerne med de komma adskilte records fra denne tabel på SQL-serveren.
hvis der køres med "statiske" længder på dine data - hvis fx. felt 1 altid vil indeholde 7 tegn etc., så er terry's løsning OK. Men hvad så i den situation hvor længden på felterne varierer fra gang til gang - så er der ikke meget dynamik i terry's løsning!
du kan oxo bruge denne stump kode som inspiration til dynamisk batching: declare @firstpos int declare @nextpos int declare @result varchar(10) select @firstpos = charindex('"', dato, 0) FROM test WHERE id = 1 select @nextpos = charindex('"', dato, @firstpos+1) from test where id = 1 select @result = substring(dato,@firstpos+1,@nextpos-@firstpos-1) from test where id = 1 print @result
når du har det hele til køre med én record smider du det bare i en cursor eller en while løkke ;-)
Det virker - Da det er anden gang i dag vil du komme med i min aftenbøn. Tusind tak til terry, slash og i andre for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.