OFDb

Stapelverarbeitung - link-Änderung, Ziel-Pfad

Begonnen von franklyn, 9 März 2022, 13:54:43

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

franklyn

Moin Miteinander !


Ich habe etliche Filme auf eine neue HD verschoben und müsste nun natürlich noch alle bereits gesetzten links abändern / neu verknüpfen,
damit alles so schön funktioniert wie bisher. :respect:
Alles andere soll so bleiben, also keinerlei Updates an anderen Feldern.

Nachdem ich einige Filme im (2.1.0) Bearbeitungsfenster jeweils einzeln neu verknüpft hatte, wurde mir das zu mühselig
und ich kam auf die verspätete Idee, dafür die Stapelverarbeitung zu nutzen.

Dabei ist mir etwas aufgefallen, bei dem ich nicht weiss, ob es für die Programmstruktur / Update-Sicherheit wichtig sein könnte? :denk2:

Da die Stapelverarbeitung für mich noch Neuland ist habe ich das Handbuch bemüht und bin bei dem "Mutter-Vater-Beispiel",
also dem Ersetzen von Text, auch schnell fündig geworden.
Der Pfad zu einer Datei besteht ja auch aus Text/Zeichen - also müsste das passen, so dachte ich mir.

Dabei habe ich den (Anfangs-)Pfad aus einem bereits händisch neu-verknüpften Film kopiert
und in das Befehls-Fenster hinein-kopiert, um bloss keine Schreibfehler zu machen.

Der Update-Befehl sah dann so aus:

UPDATE MyMDb-CE
  SET symlink = REPLACE(symlink, 'D:/Filme - Animation', 'Y:/Film - ANI')
  WHERE symlink LIKE '%D:/Filme - Animation%'

Als dann nach "aktualisiere Datenbank" die Meldung kam, dass 30 Filme aktualisiert würden - habe ich abgebrochen.
Der Abbruch deswegen, weil es viel mehr als nur 30 Filme hätten sein müssen...


Also habe ich noch mal alles überprüft, aber keinen Fehler entdecken können.
Statt der genauen Variante nahm ich nun die Allgemeine für meinen nächsten Versuch.

Das sah dann so aus:

UPDATE MyMDb-CE
  SET symlink = REPLACE(symlink, 'D:/Filme - Animation', 'Y:/Film - ANI')
  WHERE 1=1

Nach "Aktualisiere Datenbank" wurde jetzt auch in allen vorhandenen Einträgen gesucht und nicht nur in 30
Das hörte sich doch gut an - also GO!


Nach dem Neustart natürlich sofort eine Überprüfung...

Seltsamerweise waren dennoch die links NICHT geändert worden.
NUR die zuvor händisch geänderten funktionierten (weiterhin).
Scheinbar wurde überhaupt keine Änderung/Aktualisierung durchgeführt, denn ALLE links,
die ich zuvor NICHT einzeln geändert habe, waren UNVERÄNDERT.

Wieso das denn? War mein obiger Update-Befehl fehlerhaft?


Bei der Suche nach einem Fehler ist mir dann folgendes aufgefallen.

Alle alten links sind so aufgebaut:            D:\ordnerbeispiel\ordnerbeispiel\beispiel-film.mp4
Die händisch neu gesetzten hingegen:    D:/ordnerbeispiel/ordnerbeispiel/beispiel-film.mp4

Es "funktionieren" übrigens beide Varianten, hierbei scheint es also unerheblich ob "\" oder "/"

Damit dürfte dann auch klar sein, warum die Stapelverarbeitung nicht so funktioniert hat, wie von mir erwartet.


Aber warum habe ich in meiner Datenbank denn überhaupt diese unterschiedlichen "Pfadbeschreibungen" bzw. "\" oder "/" ? :denk2:
Ich habe bisher immer die links händisch mit "link auswählen" gesetzt,
also keinerlei Automatisierung, wie Einlesen lassen etc. genutzt.

Kann es vielleicht etwas mit der Programm-Version zu tun haben, in der der link ursprünglich angelegt wurde?
(Die ersten Einträge sind hier mit MyMDb 3.4.1 eingepflegt worden)

Bevor ich eine weitere, erneute Stapelverarbeitung versuche mit:

UPDATE MyMDb-CE
  SET symlink = REPLACE(symlink, 'D:\Filme - Animation', 'Y:/Film - ANI')
  WHERE symlink LIKE '%D:\Filme - Animation%'

frage ich zur Vorsicht lieber mal nach, was es mit meinen Beobachtungen (MyMBd-CE 2.1.0) auf sich hat
und/oder ob hier noch ein anderer Fehler vorliegt.
Ich möchte mir ungern meine Datenbank zerschießen oder später mal bei einem Update in einer Sackgasse landen.

Vielleicht kann wer was dazu sagen und /oder hatte ein ähnliches Problem?


Viele Grüße
franklyn


p.s.
Ich habe die neue Version 2.1.1 noch nicht diesbezüglich getestet, da sich das hier für mich gerade überschneidet
und ich die neue 2.1.1 gerade erst gezogen, aber noch nicht betrieben habe.
Vielleicht hat das in der Update-Historie unter "Verbesserungen" aufgeführte:
"Programm-Verzeichnisse werden für Windows-User mit "\" angezeigt" ja etwas mit dieser Thematik zu tun ??

tbengel

Hallo Franklyn,

in MyMDb-CE werden die Links beim Neuanlegen mit "/" gespeichert. Die alten
Links mit "\" sind wohl dann historisch begründet.

Grüße

tbengel

franklyn

Moin tbengel,

danke für Deine Antwort.

Hmmm, so ganz soo "historisch" kann das aber mit dem standardmäßigen "/" nicht sein, denn ich habe Datensätze, die ich "erst" im Januar 2021 angelegt habe. Das dürfte mit der MyMDb-CE 2.0 gemacht worden sein.
Die Verknüpfungen die ich kurz nach Neuerstellung des Datensatzes angelegt habe, haben noch "\".

Wie dem auch sei, es scheint ja keine Rolle zu spielen, denn es "funktionieren" ja beide.

Die Frage die sich für mich aber dennoch ergibt:
Macht es aus Sicherheits-/ Kampatiblitäts-Gedanken vielleicht dennoch Sinn alle "\" mit "/" zu ersetzen, wenn ich eh gerade dabei bin ?
Und: Ist mein letzter obiger "Update-Befehl" richtig so?

Viele Grüße

franklyn

tbengel

Hallo Franklyn,

ZitatMacht es aus Sicherheits-/ Kampatiblitäts-Gedanken vielleicht dennoch Sinn alle "\" mit "/" zu ersetzen, wenn ich eh gerade dabei bin ?
Und: Ist mein letzter obiger "Update-Befehl" richtig so?
Aus "Sicherheits-/ Kampatiblitäts-Gründen eher weniger, da es eigentlich egal ist. In der neuen Version,
wirst Du auf dem ersten Blick auch nicht mehr sehen, was da im Hintergrund in der Datenbank steht, da
dann für alle Windows-User bei den Links immer "\" angezeigt wird und für Linux / Mac "/".

Um das nächste mal alle zu erwischen könntest Du es so machen:

UPDATE MyMDb-CE
  SET symlink =  REPLACE(REPLACE(symlink, '\', "/"), 'D:/Filme - Animation', 'Y:/Film - ANI'))
  WHERE symlink LIKE '%D:\Filme - Animation%' OR symlink LIKE '%D:/Filme - Animation%'

Also zuerst wandelst Du alle "\" in "/" und danach ersetzt Du das Ganze. Die Where-Bedingung
könnte man mit Wild-Cards noch smarter machen, aber das wird dann vielleicht für Dich zu wild  :happy3:

Grüße

tbengel

franklyn

Lieber tbengel,

Genau so werde ich es machen, danke Dir.

Ich kann aber doch mein "Linux-Backup" einfach in meine WIN-Version einspielen (und umgekehrt),
oder gibt es dabei etwas zu beachten?

Viele Grüße

franklyn

tbengel

ZitatIch kann aber doch mein "Linux-Backup" einfach in meine WIN-Version einspielen (und umgekehrt),
Sollte keine Probleme machen, nur die Pfade der Links könnten (je nachdem) unterschiedlich ein ...

Grüße

tbengel

franklyn

Ok !
Da ich die links (derzeit) immer NUR in der WIN-Version einstelle, dürfte das ja auch egal sein...

So, dann werde ich jetzt mal versuchen meine Linux-Version auf die neue 2.1.1 zu uppen und dabei endlich auch mal das mit der Ordnerstruktur und der Desktop-Verknüpfung versuchen hinzubekommen.
Das habe ich nämlich beides bisher nicht hinbekommen...  :sad:  , da auch Linux bisher noch Lern-Land für mich ist.


Tschau, ich bin dann erst mal im neuen Handbuch unterwegs...

franklyn

franklyn

Moin tbengel,

Zitat von: tbengel am 10 März 2022, 15:55:19UPDATE MyMDb-CE
  SET symlink =  REPLACE(REPLACE(symlink, '\', "/"), 'D:/Filme - Animation', 'Y:/Film - ANI'))
  WHERE symlink LIKE '%D:\Filme - Animation%' OR symlink LIKE '%D:/Filme - Animation%'


Zitat von: franklyn am 10 März 2022, 17:55:28Genau so werde ich es machen, danke Dir.
Habe es jetzt fast so gemacht.

Mit dem Unterschied, dass ich Dein obiges  "/"  in  '/'  verändert habe, weil ich von einem Flüchtigkeits-Schreibfehler ausgegangen bin.
Denn ich habe bei den im Handbuch gefundenen Befehls-Beispielen nicht einmal ein normales Anführungszeichen " entdecken können,
sondern immer nur das Hochkomma ' .
Ich hoffe das war richtig ? :denk2:

Denn nach Eingabe und abschicken des Befehls bekam ich die ErgebnisNachricht dass die Datenbank NICHT aktualisiert wurde. Fehleralarm!

Eine Überprüfung hingegen ergab, das trotz Meldung DENNOCH alle  "\"  zu  "/"  geändert wurden
und auch die neuen, bzw. geänderten links allesamt funktionieren.


Hast Du eine Idee, warum trotz Fehlermeldung scheinbar doch aktualisiert wurde?
Warum diese Fehlermeldung, sollte sie mir Sorgen machen?
Und: Habe ich mich mit dem Flüchtigkeitsfehler geirrt und sollte doch lieber Deinen Ursprungs-Befehl verwenden?


Viele Grüße

franklyn

tbengel

Hallo Franklyn,

ZitatHast Du eine Idee, warum trotz Fehlermeldung scheinbar doch aktualisiert wurde?
Warum diese Fehlermeldung, sollte sie mir Sorgen machen?
Und: Habe ich mich mit dem Flüchtigkeitsfehler geirrt und sollte doch lieber Deinen Ursprungs-Befehl verwenden?
Ich hatte das Ganze trocken programmiert und neben dem von Dir bereits gefundenen Fehler mit dem Hochkomma,
war noch eine Klammer zuviel, so ist der Befehl korrekt:

UPDATE MyMDb-CE
  SET symlink =  REPLACE(REPLACE(symlink, '\', '/'), 'D:/Filme - Animation', 'Y:/Film - ANI')
  WHERE symlink LIKE '%D:\Filme - Animation%' OR symlink LIKE '%D:/Filme - Animation%'

Die Fehlermeldung kam wegen der Klammer, die zuviel war. Grundsätzlich kann sich nur die Link-Spalte
verändert haben, also wenn diese passt, dann ist alles OK. Zur Sicherheit kannst Du nochmal das
Backup (was Du vorher hoffentlich gemacht hast) einspielen und dann den korrigierten Befehl
loslassen.

Grüße

tbengel

franklyn

Hallo tbengel,

ahhh OK ! Danke für die Infos und die Korrektur.

Ich meine, das tatsächlich alles dennoch korrekt ist .... checke ich jetzt aber nochmal .... und ja, NATÜRLICH habe ich beim Aktualisieren ein Backup machen lassen...


Viele Grüße

franklyn

TinyPortal 2.0.0 © 2005-2020