Avatar billede bigbendk Nybegynder
27. august 2000 - 18:12 Der er 6 kommentarer og
1 løsning

Insert/update af tabel

Hej

jeg har en kommasepereret fil, som skal sykroniseres, dvs. at den skal tage de data fra filen, og ligge ind i databasen (SQL server 7 base).

Det scriptet skal er:
1 Tjekke om id\'et findes i databasen, og opdatere hvis det gør.
2 Hvis det ikke findes i databasen, skal den tilføje i databasen.

jeg har lavet et script der gør det, men det er ikker særlig hurtigt (1894 poster på 90 sekunder).
Findes der en måde hvorpå man kan se hvor mange records en UPDATE statement har influeret på?
Ellers skal der laves et query pr. post, og det koster recurser og tid.

Nogen der har en fiks løsning?
Avatar billede jimmidreng Nybegynder
27. august 2000 - 18:20 #1
Der er en meget fiks løsning, men ikke til 30 point!

/Jimmi
Avatar billede bigbendk Nybegynder
27. august 2000 - 21:28 #2
Hvad med 100 stærke then?
Avatar billede chruker Nybegynder
27. august 2000 - 22:41 #3
Prøv evt. at poste dit script, så kan det være at der er nogen som kan optimere det for dig.
Avatar billede briankl Nybegynder
28. august 2000 - 17:48 #4
ADO Connection objektet har en method med følgende form:

connection.Execute CommandText, RecordsAffected, Options

Hvor CommandText er SQL querien, og options er netop options. Du er interesseret i RecordsAffected som er en long hvori ADO gemmer det antal records der er blevet opdateret.

Bruger du Command objektet kan noget tilsvarende gøres. Command objektet\'s execute method ser ud som følger:

command.Execute( RecordsAffected, Parameters, Options )

Jeg ville dog nok foretrække at nøjes med Connection objektet. Det er nemt og ligetil.
Avatar billede bigbendk Nybegynder
28. august 2000 - 22:11 #5
Kæmpegodt! tak brian, det var lige det jeg manglede...

Efter at have omskrevet scriptet har det fået 100% bedre preformence.
Avatar billede chruker Nybegynder
29. august 2000 - 01:51 #6
Jeg kan ikke se hvordan briankl\'s svar overhovedet har kunnet hjælpe dig med det performance problem du sagde dit script havde. Det eneste han svarer på er hvordan man får recordsaffected værdien, og det svar kunne man have fundet ved at kigge i ADO dokumentationen.
Avatar billede bigbendk Nybegynder
31. august 2000 - 18:59 #7
ved at kunne springe query delen over - Man køre bare et update, og hvis den har influeret på 0 records, opretter den en record, og videre til den næste....

Istedet for at man skulle selecte ud fra basen, tjekker om den var eof/bof, og så enten update/inserte.
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
Kurser inden for grundlæggende programmering

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