Juli 02, 2022, 19:41:29

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Import verbessern

Begonnen von Xoar, März 19, 2022, 16:28:16

⏪ vorheriges - nächstes ⏩

Xoar

Hallo zusammen,

ich wechsle gerade mein Backend von Access zum MS SQL Server und möchte in dem Zuge mein Import aus einer csv Datei verbessern.

Die CSV beinhaltet ungefähr 50 Spalten mit immer ca. 20-100 Zeilen an Daten.

Es kann sein, dass die Import Datei die gleichen Datensätze beinhaltet wie im vorherigen Import, daher habe ich in der Zieltabelle ein Feld ,,LoeschSicherung" erstellt, was angibt, dass dieser Datensatz nicht gelöscht oder verändert werden darf.
Die Zieltabelle hat zusätzlich noch weitere Felder, die die Daten vom Import ergänzen. 

Bisher habe ich es immer so gemacht, dass ich alle Datensätze der Zieltabelle gelöscht habe, außer die mit dem der LoeschSicherung = True und dann alle Datensätze der Quelldatei der Zieltabelle hinzugefügt habe. Durch einen eindeutigen Index, wurden dann alle Quelldatensätze hinzugefügt, und bei den LoeschSicherung = True Datensätze hat die interne Regel von Access das Überschreiben dieser Datensätze verhindert.

Das klappt natürlich so, ist aber nicht die beste Art vermutlich.

Hoffe konnte man einigermaßen verstehen.

Mein Gedanke es zu verbessern wäre z.B. die Quellatei zu verknüpfen und eine Auswahlabfrage zu bauen, die alle Datensätze anzeigt die in der Quell und Zieltabelle vorhanden sind und dann nur diese aus der Zieltabelle löscht, sofern der Anti-Löschvermerk nicht gesetzt ist.

Gedanke zwei das alles über eine VBA Schleife zu machen, aufgrund der geringen Anzahl von Datensätze.

Wie würdet ihr sowas umsetzen?


DF6GL

Hallo,


Zitat..dass die Import Datei die gleichen Datensätze beinhaltet wie im vorherigen Import..

Woran erkennt man die Gleichheit?


Lege über die entspr. Felder einen eindeutigen Index , so dass ein Anfügen solcher DS unterbunden wird.

Xoar

Moin Franz,

ja so einen eindeutigen Index gibt es und hab ich auch benutzt.

Danke 


Xoar

Ich dachte, dieser Weg über die eindeutigen Indexe um das intern automatisch zu unterbinden, sollte man nicht umbedingt machen.

Aber wenn das kein Problem darstellt, kann ich zufrieden sein.

Danke, dann lass ich es so 😀

DF6GL

HAllo,


Zitatsollte man nicht umbedingt machen.
Es ist eine von mehreren Möglichkeiten und ist diejenige, die am Ende der Fahnenstange unmissverständlich greift.

Es wird einfach auf die "Überwachung" der DB-Engine (egal, welche das ist)  zurückgegriffen, und die verhindert Auswirkungen der "Schlamperei" bei der vorangegangenen Programmierung.


Andere Methode wäre, mittels SQL diejenigen DS vom Import auszuschließen, die schon vorhanden sind.  Aber auch da braucht man die Kenntnis der relevanten Felder.


Das Getöns´mit "LoeschSicherung = True " brauchst Du nicht, falls ich die Ausgangssituation richtig verstehe.


ebs17

Indexfehler (Abfeuern von Duplikaten auf einen eindeutigen Index) sind auch Fehler, die ich vermeiden würde. Hilfreich ist da eine Inkonsistenzprüfung:
Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle

Zitatich wechsle gerade ... zum MS SQL Server
Da könntest Du Dir auch dort verfügbare Methoden ansehen: BULK INSERT (Transact-SQL)
Mit freundlichem Glück Auf!

Eberhard

Xoar

Habs jetzt so gelöst, dass ich über eine Zwischenabfrage ermittle, welche DS noch nicht vorhanden sind und diese anfüge. Die vorhandenen aktualisiere ich dann mit einer Aktualisierungsabfrage mit für mich relevanten Parametern.

Danke euch beiden. Hab meinen Import optimieren können. 👍🏻