Avatar billede ae03 Novice
29. juni 2010 - 11:34 Der er 5 kommentarer og
1 løsning

Kopiere post fra tabel til tabel

Jeg har brug for at opdatere alle værdier i en enkelt post i en tabel fra en post i en anden tabel, som indeholder kolonner med de samme navne. Tabellen, som skal opdateres rummer også andre kolonner inde mellem de kolonner, der skal opdateres. Da der er tale om over 250 kolonner, vil jeg nødigt ud i at skulle skrive en update, hvor jeg angiver opdateringerne en ad gangen.
Er der en måde, hvorpå jeg ud fra sammenligning af kolonnenavne kan opdatere en post i tabel X med løbenummer xx ud fra en post i tabel Y, som også rummer en post med løbenummer xx? Løbenummeret er unikt.
Avatar billede arne_v Ekspert
29. juni 2010 - 15:25 #1
Skriv noget kode som finder alle felter i tabel og dynamisk genererer SQL saetningen.
Avatar billede janus_007 Nybegynder
29. juni 2010 - 18:04 #2
Ligger tabellerne på samme server eller distribueret ud?
Er det kun et engangsjob?
Er der krav til oppetid imens?
Hvor mange rækker drejer denne update sig om?

En tabel med over 250? Hvad indeholder den? Taler vi DW?
Avatar billede ae03 Novice
30. juni 2010 - 09:37 #3
Tabellerne ligger i samme database. Der er tale om en med originaldata, som der absolut ikke skal røres ved, og en med fejlrettede og udbyggede data, hvorfra jeg desværre er kommet til at slette en forkert post, som jeg nu skal genoprette.

Det er derfor et engangsjob. P.t. er der ikke andre brugere på databasen end mig, og jeg skal ikke bruge den mere i et par uger. Men hvis du med oppetid mener på hele serveren, så er jeg ret sikker på, at jeg ikke bliver populær på at lægge en af kommunens servere ned ret længe ad gangen.

Det er kun en række, hvor data skal kopieres fra den ene tabel til den anden. Til gengæld er det størstedelen af de mere end 250 kolonner (de fleste af typen 'float'), som skal opdateres.

Hvad mener du med DW?
Avatar billede janus_007 Nybegynder
30. juni 2010 - 15:20 #4
En række?

insert into dinKopiTabel(field1, field2, field3....)
select * from dinOrigTabel where Id = denIdduMangler... eller
where id not(select id from dinKopiTabel)

Måden du henter samtlige kolonnenavne ud på.. og det skal du jo gøre på dinOrigTabel er ved at åbne object explorer... altså den hvor du kan se hvilke tabeller osv der ligger i din database, fold din dinOrigTabel ud og tag fat i mappen Columns og træk ind på editorområdet.

Det skulle kunne klare det :)

DW er dataware housing
Avatar billede ae03 Novice
30. juni 2010 - 15:55 #5
Tak for hjælpen! Det virkede fint.

Jeg var ikke klar over, at det kunne klares ved at trække hele mappen, og det med at trække eller skrive enkeltvis havde jeg ikke lige mod på.

Smid et svar, så er pointene dine.
Avatar billede janus_007 Nybegynder
30. juni 2010 - 19:22 #6
hehe... der er ikke så mange der lige kender den med mappen :) God at have i baghånden til adHoc opgaver.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester