Avatar billede eksperten1 Nybegynder
05. november 2002 - 11:25 Der er 12 kommentarer og
1 løsning

Brug af temp tabeller

Jeg vil gerne opdatere en SQL Server med nogle data fra en FoxPro .dbf fil, som ligger lokalt på en klient. For ikke at droppe tabellerne på SQL Server og så skulle sende alle data op, så vil jeg gerne opdatere en temp Tabel med data først og så bagefter tømme den aktive tabel i SQL Server, dernæst kopiere alle data fra den temporære tabel over i den aktive, til sidst tømmes den temporære tabel.

A = lokal FoxPro dbf
B = SQL Server "aktiv" tabel (bruges til ASP)
C = SQL Server "temp" tabel

Jeg er ved at lave et VBS som på sigt gør flg:
1. Henter alle data fra A (getrows)
2. DELETE FROM (C); INSERT INTO (C) (1)
3. DELETE FROM B; COPY (B) -> (C);

Fatter I hvad jeg er ude på, er der en bedre metode. Jeg henter alle records ud fra FoxPro db i en RS.getrows, findes der en tilsvarende RS.Putrows ?

Hvordan kan jeg få SQL Serveren til at duplikere alle data fra tabel B over i tabel C ?
Avatar billede Slettet bruger
05. november 2002 - 11:27 #1
Ved lejlighed gider du så ikke lukke nogle af dine åbne spørgsmål?
Avatar billede bennytordrup Nybegynder
05. november 2002 - 11:28 #2
Der findes ikke en putrows - der er kun den hårde løsning med at løbe et recordsæt igennem og indsætte enkeltvis.

Fra B til c:

insert C
select *
from B

(forudsat, at B og C er ens i feltrækkefølge og -typer).

Hvis der er identity felter i c, skal det være

set identity_insert C on

insert C
select *
from B

set identity_insert C off

(såfremt værdien af identity-felter er vigtig).
Avatar billede bennytordrup Nybegynder
05. november 2002 - 11:29 #3
Det skulle være et svar
Avatar billede eksperten1 Nybegynder
05. november 2002 - 11:41 #4
OK, jeg tror at jeg skal have den lidt mere udpenslet...

INSERT INTO (c) (SELECT * FROM (b)); kan man det ?

vhE1
Avatar billede bennytordrup Nybegynder
05. november 2002 - 11:42 #5
Det er 100% som jeg skrev:

insert c select * form B

(into er optional)
Avatar billede eksperten1 Nybegynder
05. november 2002 - 11:45 #6
Cool, det må jeg prøve med det samme
Avatar billede eksperten1 Nybegynder
05. november 2002 - 11:53 #7
OK det kører for hurtigt, 1000 tak.

>schulze - sorry, i'm a slacker, jeg har vist fået ryddet op efter mig.

vhE1
Avatar billede Slettet bruger
05. november 2002 - 11:55 #8
eksperten1>:) finno.
Avatar billede eksperten1 Nybegynder
05. november 2002 - 12:03 #9
OK nu fik jeg jo lukket, men hvordan er det hurtigst at inserte alle de records fra mit array ?
Avatar billede bennytordrup Nybegynder
05. november 2002 - 12:09 #10
En for-løkke, hvor du laver en

insert B (FeltListe) values (VærdiListe)
Avatar billede eksperten1 Nybegynder
05. november 2002 - 12:17 #11
Det jeg var ude i, er om jeg kunne slippe for netop dette idet der er en hulens masse felter.

Hvad med performance, burde jeg kigge på en stored procedure.

vhE1
Avatar billede bennytordrup Nybegynder
05. november 2002 - 12:24 #12
Du kan ikke komme uden om at skulle køre en løkke igennem, når du ikke har begge databaser på samme maskine.
Avatar billede eksperten1 Nybegynder
05. november 2002 - 12:29 #13
Æv!
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