![]() |
Datenbank: Sybase • Version: 7 • Zugriff über: NativeDB
Problem mit Datensatz Import
Hallo Leute,
Also ich habe das Problem das ca. 300.000 Datensätze in 1 Stunde Importieren sein sollten. Die Datenbank Läuft Lokal auf meinem Pc und ich verwende keine Indizies. Ich verwende die Komponente "NativeDB" und zum Verbinden "TAsaSqlQuery" um alles zu Beschleunigen habe ich den Cursor Typ auf "actFixedScroll" gestellt. Ich teile derezeit zb. 20.000 Datensätze auf 5 Threads auf. Die Threads tragen die die Daten dann in die Datenbank gleichzeitig ein und dafür benötige ich ca. 30 Minuten. Damit ich 300.000 Datensätze in 1 Stunde schaffe müsste ich im gesammten ca. 40 Threads verwenden jedoch währe die zu Verwalten ein enormer aufwand. Ich währe für die Hilfe echt dankbar :wink: cu live5 |
Re: Problem mit Datensatz Import
Hallo,
Zitat:
dann können wir besser helfen. :hi: edit: selbst ohne Thread´s sollte das eigentlich kein Problem sein. :gruebel: uppps... Wilkommen in der DP :dp: |
Re: Problem mit Datensatz Import
Es geht um Datanorm5 Daten
eine zeile ist so aufgebaut.: A;N;Artikelnummer;Text1;Text2;1;50;50000 Und solche 300.000 Artikel sind in ernem Textdatei vorhanden. Bei den Artikeln werden noch berechneungen vom Preis durchgeführt bevor sie in die Datenbank eingetragen wird. Ich Lese die Dateie ein unbearbeite diese dann Zeile für Zeile und speicher die daten dann in die Datenbank. :freak: |
Re: Problem mit Datensatz Import
hmmm...
laut Adam Riese und Eva Zwerg wären das 12 ms je Datensatz. Das wird mit Text parsen und eintragen schon knapp. Laß uns mal ein wenig Zeit zum überlegen :zwinker: Edit: wie sieht den Dein Code zum Parsen der Datei aus ? Ich würde da ansetzen, da das die meiste Zeit verbraucht. |
Re: Problem mit Datensatz Import
Danke mal im Voraus.
Ich lese eine Zeile ein Teile diese bei jedem ";" Danach erfolgen die Berechnungen und per Sql Query wird dann alles in die Datenbank eingetragen. Am meisten zeit benötige ich beim Sql Query deshalb habe ich auch mehrere Abfragen zu einer Großen gemacht damit alles etwas schneller wurde. |
Re: Problem mit Datensatz Import
ich habe grad nochmal bei einem Projekt von mir geschaut. Da hatte ich 23 Textdateien einzulesen wo unter dem Strich 45000 Datensätze in der DB landeten. Die Zeilenanzahl in der Textdatei war höher, da der Text "Gruppiert" war. Der Import dauerte grad mal 2 Minuten. Hochgerechnet läßt du irgendwo ne Menge Zeit liegen. Das können wir nur gemeinsam finden, wenn du uns einen Einblick in den Quelltext gewährst :zwinker:
PS: ich arbeite mit Firebird. Liegen da die Unterschiede :gruebel: wie oft mußt du diesen Import machen ? edit: gelogen... :oops: sind nur 15000 DS in der DB in 2 Minuten. würde aber trotzdem reichen. |
Re: Problem mit Datensatz Import
Liste der Anhänge anzeigen (Anzahl: 1)
Ok Danke !
Ich poste mal die Dateien für den Import. |
Re: Problem mit Datensatz Import
Ok...ohne das du mich festnagelst. Ich hab weniger Zeit als du gehabt mich damit zu beschäftigen. :zwinker:
folgende Dinge sind mir aufgefallen: ich denke, daß die meiste Zeit in der AddToDB liegen bleibt. - du erzeugst für jeden neuen Datensatz eine eigene GUID, könnte das von der DB selbst über einen Generator und Trigger erfolgen ? - du liest die komplette AsaSQLQuery ein um sie dann nach Feldänderungen mit Append zu schreiben. Für die Überprüfung ob vorhanden reicht ein select count auf die entsprechenden Felder. - das Schreiben würde ich mit insert into machen und die Werte als Parameter zur Verfügung stellen. - Ich verstehe nicht, was die Sachen mit dem richViewHelper in der AddToDB für einen Sinn haben. Diese werden mit jeder Zeile mit ausgeführt. (frmMain.TFrmDatanormImport.richViewHelper.Lines.S aveToStream(strStream);) - Änderungen an den Artikeln mit SQL update statt Modify. Je nach Einstellung der Query werden viel zu viel Überprüfungen durchgeführt. für den Anfang schon mal ein paar Anregungen. :wink: |
Re: Problem mit Datensatz Import
Threads dürften nicht helfen, da die Threads synchronisiert werden müssen. Denn es kann immer nur ein Thread in die Datenbank schreiben.
|
Re: Problem mit Datensatz Import
Zitat:
1. Erstell einen Index auf COL_ArtikelNummer. 2. Frage nicht auf 'LIKE' ab. 3. Zum prüfen, ob der Artikel schon existiert reicht ein
SQL-Code:
Ohne Index dauert diese Prüfung immer länger.
SELECT COL_ArtikelNummer From <Tabelle>
WHERE COL_ArtikelNummer='BlaBla' AND COL_DataNormLieferant like '%FooBar%' -- <<--- So ein Quark 4. Lerne etwas über 3NF (Außer, die DB-Struktur darf nicht verändert werden. Egal, lerne trotzdem) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz