Werden vorhandene Werte in einer Access-Datenbank beim Import einer .xlsx-Datei mit leer überschrieben oder beibehalten?

Photon

Rear Admiral
Registriert
Apr. 2006
Beiträge
5.141
Hallo zusammen,

wenn ich eine .xlsx-Datei in eine Access-Datenbank importiere, wobei die .xlsx-Datei bei einem Feld stellenweise leere Werte hat, wo jedoch die Access-Datenbank nichtleere Werte hat, werden dann beim Import die vorhandenen Werte aus der Datenbank mit "leer" überschrieben oder beibehalten?

Viele Grüße
Photon
 
Hab leider kein Access, arbeite hier nur mit CSV/XLSX, den Import in die Datenbank macht dann jemand anders. Dachte, vielleicht weiß das jemand, damit ich nicht darauf warten muss, bis ich es ausprobieren lassen kann.
 
Wenn man nur einen reinen Import macht, erhält man eine weitere Tabelle. Damit die Daten überhaupt mit einer bestehenden zusammengeführt werden muss man einen Join oder Union machen und je nachdem werden die Daten ergänzt. Zum Überschreiben der bestehenden Daten mit Null müsste man sogar ein Update machen wobei das etwas komplexer wird die Bezüge genau zu benennen.
 
  • Gefällt mir
Reaktionen: Photon
Eine leere Zeile hat beim "Import" auch einen Wert. Leer bedeutet nicht nichts.
Der Begriff "Import" ist hier aber ganz sicher falsch, daher wäre es sinnvoller, die Vorgehensweise zu beschreiben.
Ein Import im Kontext von Access überschreibt nämlich keine vorhandenen Tabellen.

Hier kannst du Access und deren Funktionen kostenlos selbst testen:
https://www.microsoft.com/de-de/microsoft-365/access/
 
  • Gefällt mir
Reaktionen: tollertyp
Ja, jetzt erinnere ich mich, dass beim Importieren eine neue Tabelle angelegt und mit einer vorhandenen Tabelle in der Datenbank zusammengeführt wird, per Join. Wie ist es dann mit den leeren Zellen?
 
Append, inner/outer join ... was hast du denn vor? So wirklich viele Infos gibt es hier ja leider nicht.
Ergänzung ()

Photon schrieb:
Wie ist es dann mit den leeren Zellen?
Leere Zeilen darf es in einer Datenbank nicht geben. Deshalb hat man immer einen eindeutigen Schlüssel, klassischerweise "ID", die einfach fortlaufend gefüllt wird. Bei CSV/TXT hingegen, wenn du hier wirklich leere Zeilen hast, wird ab der ersten leeren Zeile abgebrochen. Textbasiert erwartet eine Datenbank keine weiteren Daten nach einer Leerzeile.
 
Dennoch kommt hier wenig Input, weshalb ich auch plump meinte, dass du es aus probieren sollst, weil anhand der Informationen kann dir doch niemand irgendwas verbindliches sagen - und stell dir mal vor, manchmal irren sich sogar Leute hier und sagen was falsches, nicht mal absichtlich.

Deshalb ist ja ein Backup so oder so Pflicht - spätestens dann von dem, der den Import macht.
 
Vielleicht hilft es, wenn ich das Problem in mehr Details beschreibe. Es gibt eine Tabelle mit alten Daten und eine Tabelle mit neuen Daten. Die Tabellen sollen zusammengeführt werden, wobei bei der Schnittmenge die alten Einträge mit den neuen Einträgen überschrieben werden sollen. Bei einem Feld haben die neuen Daten jedoch für manche Einträge Lücken (leere Werte). Hier sollen die alten Daten nicht mit "leer" überschrieben sondern beibehalten werden. Also:

Wenn eine Spalte / ein Feld nur in A existiert, aber nicht in B, behalte die Spalte aus A.
Wenn eine Spalte / ein Feld nur in B existiert, aber nicht in A, ergänze die Spalte aus B.
Wenn eine Spalte / ein Feld sowohl in A als auch in B existiert, überschreibe die Spalte aus A mit der Spalte aus B, außer Einträge, die in B leer sind, hier behalte die Einträge aus A.
 
Und ich kann mich in dem Fall nur wiederholen: Ausprobieren.
Ich würde behaupten für 99% der Forenteilnehmer sind das immer noch nicht genug Informationen. Manche Leute machen sich die Mühe und liefern Beispiele, manche sogar in Form von Beispieldateien.

Andere sagen halt, dass sie nicht testen können.
 
Hier ist Tabelle A:

Feld1Feld2Feld3
Wert11Wert21Wert31
Wert12Wert22Wert32
Wert13Wert23Wert33

Hier ist Tabelle B:

Feld2Feld3Feld4
NeuerWert21NeuerWert41
NeuerWert32NeuerWert42
NeuerWert23NeuerWert33NeuerWert43

Herauskommen soll:

Feld1Feld2Feld3Feld4
Wert11NeuerWert21Wert31NeuerWert41
Wert12Wert22NeuerWert32NeuerWert42
Wert13NeuerWert23NeuerWert33NeuerWert43

Wo also die neuen Daten eine Lücke haben, bleiben die alten Daten (Wert22 und Wert31) Hoffe, die Infos genügen?
 
Genau, jede der drei Beispielzeilen hat eine ID, die in beiden Tabellen übereinstimmt, hab ich vergessen, sorry! Möglicherweise gibt es IDs, die nur in einer der beiden Tabellen vorkommen, da soll sicherheitshalber die Vereinigungsmenge der Zeilen gebildet werden (überflüssige Zeilen kann man später händisch löschen). Die Anzahl der Zeilen ist nicht furchtbar groß, 100-200 nur, da kann man also schon auch händisch nacharbeiten, möchte man aber natürlich was geht automatisieren.
 
Und du denkst, all diese, jetzt genau in deinem Fall gewünschte Logik solle doch evtl. genau das automatisch Standardverhalten sein?

Natürlich nicht.

Vor allem hat das was du dort beschreibst eben gar nichts mit dem vorher erwähnten Join zu tun.

Die Basis-Operationen die hier herangezogen werden sind Union um die neuen Datensätze an die alte Tabelle anzufügen und Update um die bestehenden Datensätze anhand der ID's mit den neuen Versionen zu Überschreiben.

Aber da wird alles aus dem neuen Datensatz übernommen. Keine Prüfung ob da in einer Zelle was vorhanden war und welche Version jetzt führend sein soll, oder gar Vereinigungsmengen. Das müsste derjenige der die Daten einspielt alles aufwendig Programmieren.
 
  • Gefällt mir
Reaktionen: tollertyp
Ich vermisse hier halt an den Beispielen eine Excel- und eine Access-Datei.
Aber der TE macht sich nicht mal die Mühe wesentliche Dinge wie die ID in die Beispiele aufzunehmen... dann kann man es halt auch lassen. So wie ich diesen Thread.
 
Das ist keine böse Absicht sondern einfach der Tatsache geschuldet, dass ich mich Null mit Datenbanken auskenne, aber Daten für den Import in eine Datenbank vorbereiten möchte. Ich habe auch kein MS Access zur Verfügung. Und die Daten, um die es geht, kann ich nicht posten, auch nicht auszugsweise, wegen Datenschutzproblemen. Dummy-Daten als Beispiel habe ich versucht zu posten, dabei die IDs übersehen, dafür habe ich mich entschuldigt. Aber wenn meine Angaben so völlig unzureichend sind und man mir nicht helfen kann, kann der Thread gerne geschlossen werden. Tut mir Leid, sollte ich eure Zeit umsonst verschwendet haben!
 
Zurück
Oben