SQL Datensätze ändern

Yasha

Urgestein
Thread Starter
Mitglied seit
01.02.2013
Beiträge
1.515
Moin,
wenn die neue Festplatte ankommt und keine OEM-Platte ist, würde ich gerne meine Bezeichnungen bei den Filmen/Serien etwas abändern. Sofern ich das halt hinbekomme, habe absolut keinen Plan davon :)

Ich habe nun ein wenig im Netz gesucht und folgendes gefunden:

UPDATE tabelle SET feld = REPLACE(feld, 'suchen', 'ersetzen');
Das soll direkt in der SQL-Datenbank ausgeführt werden. Bei mir wäre es dann denke ich über phpMyAdmin unter SQL. Gegeben sind zwei Datenbänke für Kodi bzw. LibreElec. Nun habe ich mich dort schon umgeschaut und es gibt die Datenbank kodi116, dort ist die Tabelle path drin, die genau nach dem aussieht, was ich suche. Dort ist ein strPath angegeben und ein strHash. Was der path sagt, ist mir klar. Beim Hash kann ich nur raten und würde darauf tippen, dass er so die richtigen Filme/Serien findet.

Den Path will ich nun ändern, der ist ca so aufgebaut.

smb://WINSERVER/Serien1/Serienname/Staffel
smb://WINSERVER/Serien2/Serienname/Staffel

Und dann immer so weiter.

Meine Idee war nun da ich es über phpMyAdmin mache und dabei eh schon in der Richtigen Datenbank drin bin...
UPDATE SET path = REPLACE(feld, 'smb://WINSERVER/Serien1/', 'smb://NAS/Serien/');

Nun war ich mir erstmal nicht sicher, ob das so richtig ist. In meiner Vorstellung dachte ich er ersetz jetzt einfach alles mit Serien1 aber lässt den Teil, der danach kommt, auch weg. So dass ich nur noch das smb://NAS/Serien/ stehen habe. Und auch alles falsch ist. Da ich aber brav ein Datenbank Backup gemacht habe, habe ich es einfach ausprobiert.

Geht allerdings gar nicht erst. Er meckert über ein unerwartetes Zeichen bei smb....

Vor 20 Jahren habe ich mich mal mit PHP und SQL-Datenbanken beschäftigt und kann mich dunkel daran erinnern, dass ein // glaube ich für Kommentare oder sowas im Code benutzt wurde. Deswegen denke ich nun, dass er sich eventuell an dem // stört. Aber wenn das wirklich so ist, wie kann ich das beheben. Und ist meine Idee überhaupt richtig. Oder fehlt mir am Ende wirklich der letzte Teil der Pfad Angabe überall?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich sehe grade beim Studieren der MySQl Anleitung das der ganze Befehl scheinbar absoluter Nonsens ist... der macht nicht das, was ich will. Ich studiere das Ding mal weiter, muss doch auch das zu finden sein, was ich suche...
 
REPLACE() ersetzt nur in der Ausgabe, nicht in der Datenbank selbst.

Um REPLACE() nutzen zu können, müsstest du vermutlich mit einem Cursor über die ganze DB laufen und Eintrag für Eintrag ersetzen.
 
Mh ja, ich bin aktuell auch bei Update gelandet. Das scheint mir der bessere Weg zu sein. Allerdings habe ich mittlerweile herausgefunden, dass der Pfad zur Datei nicht nur in der einen Tabelle steht. Es gibt noch gefühlt zig andere Tabellen wo der Pfad angegeben bzw. geändert werden muss. Da sehe ich schon irgendwie schwarz, dass am Ende überhaupt noch etwas läuft. Vorrausgesetz ich bekomme ihn überhaupt dazu überredet, irgendwas zu machen. Bis jetzt schmeißt er nur Syntaxfehler raus...

Vermutlich ist es schneller, dass einfach neu einzulesen, sofern ich die Pfade wirklich ändern will... und dann einfach alles neu als gesehen zu markieren...

Bei der Gelegenheit könnte ich mein altes XAMPP aus 2016, was nie ein Update gesehen hat auf den neusten Stand bringen.
 
Alles klar, ich gebe es auf... ich habe mal schnell durch google den Suchbegriff "mehrere filme in kodi als gesehen markieren" eingegeben.

Erste Treffer, in der Videoansicht einfach auf den Ordner auswählen, c drücken auf der Tastatur und einfach als gesehen markieren anklicken. Dann wird der komplette Inhalt als gesehen markiert.

Eine Tastatur an den Raspi zu stecken, dürfte schneller sein als mich weiter durch den bes*** SQL kram zu wühlen, wo ich eh nur Bahnhof verstehe.
Beitrag automatisch zusammengeführt:

Ok, ich werde es einfach neu einlesen, wollte mich aber trotzdem nicht geschlagen geben. Deswegen nur zum Verständnis, nach weiteren Suchen bin ich mir zu 99% sicher das ich es richtig habe... aber er nimmt es nicht.

Code:
UPDATE path
SET strPath = REPLACE(strPath, 'Winserver/Serien1/', 'NAS/Serien')
WHERE strPath LIKE '%Winserver/Serien1/%'

Nach meinem Verständnis sollte, das die Tabelle path auswählen. Und dann eben in der Spalte strPath alles, was mit Winserver/Serien1/ zu tun hat durch NAS/Serien ersetzen.

Bei einer Simulierten Abfrage schmeißt er mir nur ein Syntaxfehler raus...

Oben steht dann Rot noch: Eine neue Anweisung wurde gefunden, aber kein Trennzeichen zwischen ihm und dem neuen vorhergehenden. (bei REPLACE)

Alle Beispiele, die ich gefunden habe, sind genauso aufgebaut. Da ich ein alten SQL-Server nutze, habe ich nun auch eine Anleitung aus 2012 gesucht. Dort steht es aber genauso drin... am alter kann es also nicht liegen.
 
Zuletzt bearbeitet:
Möglicherweise fehlt einfach das abschließende Semikolon. Ferner geht dir beim Ersetzen ein Schrägstrich verloren.

Es wird dir übrigens kaum was nützen, in der Kodi-DB einfach den Pfad in einer Tabelle anzupassen, da du die entsprechenden Bibliotheksfreigaben auch ändern müsstest und die Pfade der Mediendateien und das schön querbeet verschachtelt ist. Das ist also Unsinn.

Wie angeraten, solltest du einfach die alten Pfade entfernen, die Bibliothek bereinigen und dann die neuen einscannen lassen.

Es ist hierbei auch ratsam,
1. dabei ausschließlich lokale Dateien einzuscannen (.nfo, .jpg für Poster usw.), wofür sich wiederum der Ember Media Manager anbietet
2. eine zentrale Datenbank und Ablage für die Thumbnails (die mehrere Gigabyte in Beschlag nehmen können) für alle Kodi-Instanzen zu nutzen (siehe hier)
 
Das Thema hat sich schon lange erledigt, ich hatte es am Ende alles neu einlesen lassen und am Ende dann wieder überall das "bereits gesehen" manuell gesetzt.

Ember Media Manager nutze ich schon lange nicht mehr. Ich bin irgendwann auf TinyMediaManager gewechselt. Kostet zwar 10€ im Jahr, gefällt mir aber bedeutend besser.

Kodi nutze ich seit ~6 Wochen allerdings auch nicht mehr. Ich habe jetzt ein Apple TV mit Infuse in Benutzung :)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh