OFDb

Leere Daten führen zum Abbruch beim Akualisieren aus eine CSV-Datei

Begonnen von sammelwut58, 4 März 2022, 18:07:11

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

sammelwut58

Ich bin beim "Datenaktualisieren" aus einer CSV-Datei ggf. auf einen Bug gestoßen. Ziel war die Aktualisierung des Feldes "Bildformat". Als Referenz diente "MyNr." (lückenlos) Das Ganze war also lediglich zweispaltig. Der Import wurde an der Stelle abgebrochen, wo in Spalte 2 (dem Bildformat) kein Eintrag vorhanden war. In meinem Fall war das die Zeile 3 (von mehr als 3000). Daraufhin habe ich (in Excel) die Leerstellen (in den Bildformatzellen) mit einem "-" Ersetzt und eine neue CSV-Datei geschrieben. Damit klappte es dann.
Darf man also keine Lücken in der "Tabelle" haben (was ja spätestens bei der gleichzeitigen Aktualisierung von mehreren Feldern schwierig wäre)?
Ist das so (sollte doch eigenlich schon aufgefallen sein), oder mache ich irgendwas grundsätzlich falsch?

PS.: Ich habe das auch im Issue-Tracker veröffentlicht

tbengel

Hallo sammelwut58,

habe ich mir mal angeschaut. Grundsätzlich sind natürlich leere Felder erlaubt,
aber wenn es zu einem Film nur leere Felder gibt, wird der Import abgebrochen.

Also kannst Du Spalte 2, 3, 4, 5 leer haben solange Spalte 6 befüllt ist.

Dies ist explizit so im Programm gewollt, also kein Bug sondern tatsächlich
ein Feature. Ich muss mal paar Nächte drüber schlafen, was ich mir dabei gedacht
habe. Ist ein sehr kleiner Fix, aber nicht dass dann irgendwas anderes nicht klappt.

Diese Regel gilt auch für den Daten-Import  :denk:

Also denkt mal alle mit, was könnte ich mir dabei gedacht haben ? :mr.green:

Grüße

tbengel

ZitatPS.: Ich habe das auch im Issue-Tracker veröffentlicht
Eine Stelle wo Du Bugs meldest reicht, kannst Dir aussuchen wo :happy3:,
hier ist es familiärer, im Issue-Tracker eher nüchtern sachlich ...

tbengel

Weiterhin ist mir noch aufgefallen, dass nur befüllte Felder
überschrieben werden, also wenn die Spalten 2, 3, 4 und 5
leer sind und nur Spalte 6 befüllt, werden die Felder 2, 3, 4
und 5 NICHT mit LEER überschrieben, sondern der alte Inhalt
bleibt erhalten.

Vielleicht wollte ich dadurch gewährleisten, dass nur die
befüllten Felder überschrieben werden und der Rest bleibt
so wie wie zuvor ...

Grüße

tbengel

sammelwut58

Das ist für mich jetzt natürlich schwer nachzuvollziehe.
Damit wir uns richtig verstehen: Ich habe mit nur 2 Spalten gearbeitet!
Die erste für die Zuordnung (hier 'MyNr.') und die zweite halt mit den Daten (in diesem  Fall 'Filmformat'), für das ich nicht in allen Filmen Angaben hatte (dementsprechend dort keinen Eintrag).

sammelwut58

Mir ist ein Grund für das Verhalten (Abbruch ohne Daten) eingefallen:
GGF. würde sonst, bei komplett leerem Datensatz, das ganze Prozedere trotzdem durchgezogen (was, zumindest in meinem Fall, etliche Minuten dauert).

Abhilfe würde da natürich schaffen nur Zeilen zu übertragen, die auch Daten enthalten (gundsätzlich wäre das gut, um den Vorgang zu beschleunigen). Ich habe aber keine Ahnung, wie ich das (ohne großen Aufwand) vorher (also schon in Excel) erreichen kann (wobei es bei einem einspaltigen Datensatz - mal abgesehen vom der Bezugsspalte - vermutlich eher machbar wäre). In Excel müsste also die Zeile, die z.B. in den Spalten 2 (ggf. +3, +4, ...) keine Daten enthalten, gelöscht werden.

Ich habe bislang nur je eine Spalte (bzw. Feld) übertragen, da es mir
A) sicherer erschien und ich
B) eher herausfinde, warum die Sache nicht, wie gewünscht, funktioniert. Hier wäre übrigens hilfreich, wenn das Programm bei Abbruch mitteilen würde, an welcher Zeile es gescheitert ist.

Bei mehreren taused Zeilen ist eine vorherige Prüfung (aller Zellen), schon aus zeitlichen Gründen, vorab nahezu unmöglich - erst recht, wenn gleichzeitig mehrere Spalten übertagen werden (bei nur einem betroffenen Feld kann man anschließend eher stichprobenartig überprüfen, ob die Daten dort (in der Datenbank) im richtigen Feld und auch im richtigen Datensatz angekommen sind.

tbengel

ZitatMir ist ein Grund für das Verhalten (Abbruch ohne Daten) eingefallen:
GGF. würde sonst, bei komplett leerem Datensatz, das ganze Prozedere trotzdem durchgezogen (was, zumindest in meinem Fall, etliche Minuten dauert).
Grundsätzlich würde ich in diesem Fall es besser finden, dass nur der Datensatz übersprungen
wird, welche leere Daten enthält und der Rest weiterläuft.

Die Frage ist nur, ob es sinnig ist wie bisher bei leeren Feldern,
diese in der Datenbank unberücksichtigt zu lassen, oder ob es besser
ist (und auch so gewollt), dass der Inhalt dann mit LEER überschrieben
wird.

Grüße

tbengel

sammelwut58

Zitat von: tbengel am  5 März 2022, 11:59:36Grundsätzlich würde ich in diesem Fall es besser finden, dass nur der Datensatz übersprungen
wird, welche leere Daten enthält und der Rest weiterläuft.

Ja, dass würde den Zweck erfüllen.

Zitat von: tbengel am  5 März 2022, 11:59:36Die Frage ist nur, ob es sinnig ist wie bisher bei leeren Feldern,
diese in der Datenbank unberücksichtigt zu lassen, oder ob es besser
ist (und auch so gewollt), dass der Inhalt dann mit LEER überschrieben
wird.

Ach so, na klar, den Fall könnte es natürlich auch geben. Dass also sozusagen ein Feldinhalt gelöscht werden soll.
Auf jeden Fall ist aber der Abbruch bei einem Leerfeld nicht gewollt.

tbengel

Hallo,

ich habe mal ein paar Nächte drüber geschlafen und tatsächlich macht es Sinn,
dass auch leere Felder übernommen werden können.

Ich habe sammelwut58 mal eine diesbezügliche Spezial-Edition geschickt, damit er
diese nun testen kann.

Grüße

tbengel

TinyPortal 2.0.0 © 2005-2020