Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 10.000 Datensätze ganz schnell einfügen (https://www.delphipraxis.net/25772-10-000-datensaetze-ganz-schnell-einfuegen.html)

tuxic 12. Jul 2004 11:28


10.000 Datensätze ganz schnell einfügen
 
Hi,
ich habe das Problem das ich gaaaaaaaaaaaaaaaaaaanz schnell mindestens(!) 10.000 Datensätze in eine Paradox über die BDE eintragen muss.
Das ganze ist in sofern einfach, weil sich eigentlich nur ein Feld immer verändert (mit einer laufenden Nummer). Dieses Feld ist aber ein Textfeld, und _kein_ AutoInc.
Im moment füge ich die Datensätze via for-Schleife ein, das dauert aber trotzdem ein wenig.
Hat irgendwer einen Optimierungsvorschlag?

MfG
Daniel

mytar 12. Jul 2004 11:31

Re: 10.000 Datensätze ganz schnell einfügen
 
Das Problem hatte ich auch mal

Das ist zwar schon länger her, aber bei irgend einer komponente die du hast

gibt es ControlsDisabled oder ControlsEnabled.

Disable die Controls vor dem Einfügen und Enable sie dann wieder.


Schau einfach mal genau nach, funktionieren tut es sicher!

mytar

phlux 12. Jul 2004 11:32

Re: 10.000 Datensätze ganz schnell einfügen
 
Ich kenn mich nicht so gut aus mit datenbanken, aber wie wärs wenn du die daten erst in einen array schreibst und dann den array als blob oder etwas anderes stream ähnliches in die db haust?

Robert_G 12. Jul 2004 11:44

Re: 10.000 Datensätze ganz schnell einfügen
 
@phlux
Bei einer "richtigen" DB würdest _fast_ richtig liegen, dort löst man das über Bulk DML (auch Array DML gennant :zwinker: )

Bei diesem BDE-Zeugs gibt's IMHO so etwas wie BatchMove (habe ich hier irgendwo mal gelesen :roll: ).

phlux 12. Jul 2004 11:48

Re: 10.000 Datensätze ganz schnell einfügen
 
Zitat:

Zitat von Robert_G
@phlux
Bei einer "richtigen" DB würdest _fast_ richtig liegen, dort löst man das über Bulk DML (auch Array DML gennant :zwinker: )

Bei diesem BDE-Zeugs gibt's IMHO so etwas wie BatchMove (habe ich hier irgendwo mal gelesen :roll: ).

Dann bin ich ja beruhigt, dass der Schuss ins Blaue geglückt ist :mrgreen:

tuxic 12. Jul 2004 12:38

Re: 10.000 Datensätze ganz schnell einfügen
 
Zitat:

Zitat von mytar
Das Problem hatte ich auch mal

Das ist zwar schon länger her, aber bei irgend einer komponente die du hast

gibt es ControlsDisabled oder ControlsEnabled.

Disable die Controls vor dem Einfügen und Enable sie dann wieder.


Schau einfach mal genau nach, funktionieren tut es sicher!

mytar

hey, guter Tipp. Anscheinend schreibt er den Index erst am Ende der INSERT's neu. Wobei das immernoch nen bischen langsam ist :D - aber viel schneller als vorher ;)

Daniel

mytar 12. Jul 2004 15:13

Re: 10.000 Datensätze ganz schnell einfügen
 
Ich hab da einfach ein Sanduhr als MouseStyle gesetzt.


D.h.

setze vor dem einfügen

Delphi-Quellcode:
CursorStyle := csHourGlass;
nach dem einfügen

Delphi-Quellcode:
CursorSytel := csDefault;

Such einfach mal in der OH nach CursorStyle oder csHourGlass;

Ich glaub im Form müsste es

Delphi-Quellcode:
Self.CursorStyle
sein

dann weis der User, aha jetzt passiert was.

ich hoffe es hilft dir

tuxic 12. Jul 2004 19:01

Re: 10.000 Datensätze ganz schnell einfügen
 
Zitat:

Zitat von mytar
Ich hab da einfach ein Sanduhr als MouseStyle gesetzt.

hehe, ich hab einfach eine Form, auf der ein Zähler immer weiterzählt, dann weiß der User auch, nach wievielen Stunden er seine Mittagspause beenden muss :D

Aber das mit dem Batchmove werde ich mir mal angugn ;)

Daniel

Chris1986 12. Jul 2004 19:12

Re: 10.000 Datensätze ganz schnell einfügen
 
Gibst du jeden der 10.000 Schleifendurchläufe optisch aus? Dann ist es klar, dass das länger dauert. :lol: Nimm das mal raus, dann sollte es schon VIEL schneller gehen

MrSpock 12. Jul 2004 19:14

Re: 10.000 Datensätze ganz schnell einfügen
 
Batchmove ist aber eine gute Empfehlung. Geht schnell und ist einfach zu benutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz