Cron:Exportieren bestimmter Felder einer Tabelle aus einer MySQL DB in eine Textdatei

Status
Für weitere Antworten geschlossen.

rumknapser

Benutzer
Mitglied seit
02. Mai 2013
Beiträge
329
Punkte für Reaktionen
6
Punkte
24
Hallo, guten Abend und hoffentlich bald ein schöneres Wetter,

Ich habe auf einer DS eine MySQL-Datenbank, von der ich gerne einige Einträge in eine Textdatei exportiert hätte.

Sagen wir, die Datenbank "DB" enhält eine Tabelle "TAB", welche wiederum folgende Felder enthält "Feld1", "Feld2", "Feld3".

die Resultierende Textdatei, welche auf dem NAS via eines Cronjobs täglich ge- und überschrieben werden soll,
soll, wenn die Tabelle 3 Einträge hat, in etwa diesen Inhalt haben:
Feld1, Feld2, Feld3
Feld1, Feld2, Feld3
Feld1, Feld2, Feld3
Also ganz einfach, 3 Zeilen in der DB, 3 Zeilen in der Text-Datei.


Jetzt habe ich herumgeguckt, und habe hier
einen passenden und einfachen Weg gefunden.
Rich (BBCode):
echo 'select field from db.table;' | mysql -u user -p password > output.txt
leiiiiiiiiiiiiiiiiiiider aber, gibt es auf der DS keinen mysql Befehl, nur einen sqlite3, der aber die MySQL Datenbank und die enthaltenen Rechte nicht unterstützt.

Wenn ich auf der Konsole nach mysql suche, bekomme ich:
> ipkg list|grep mysql
dspam-mysql - 3.9.0-1 - DSPAM is a scalable and open-source content-based spam filter designed for multi-user enterprise systems.
gnokii-smsd-mysql - 0.6.28.1-1 - A gnokii sms daemon
mysql - 4.1.22-3 - Popular free SQL database system
mysql-connector-odbc - 3.51.12-2 - MySQL connector ODBC
mysql5 - 5.0.88-1 - Popular free SQL database system
perl-dbd-mysql - 4.006-1 - DBD-mysql - The Perl Database Driver for MySQL.
php-mysql - 5.2.17-2 - mysql extension for php
phpmyadmin - 2.6.2-2 - Web-based administration interface for mysql
py25-mysql - 1.2.3c1-1 - MySQL support for Python.
py26-mysql - 1.2.3c1-1 - MySQL support for Python.

Ich habe MySQL schon via DS-GUI Systemsteuerung -> Webdienste aktiviert,
und möchte mir das funktionierende System nicht zerschießen, indem ich jetzt einfach etwas drüberbügle, was das bestehende (MySQL)System kompromittiert.
(PHPMyAdmin habe ich als Paket auch installiert)

Kurze Frage also:
Wie/woher bekomme ich eine Mysql-Kommandozeile, mit der ich die Datenbank auf dem NAS durchsuchen und exportieren kann, wie oben aus dem praktischen Beispiel von stackoverflow ?

Wenn das jemand hier wüsste und/oder Ideen dazu hat, wäre mir das sehr recht :)
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo,

wie wäre es denn mit

Rich (BBCode):
~ > /usr/syno/mysql/bin/mysql --version
/usr/syno/mysql/bin/mysql  Ver 14.14 Distrib 5.1.49, for pc-linux-gnu (i686) using  EditLine wrapper

mysql ist doch schon vorhanden und neuerer als das was Du per IPKG zusätzlich installieren kannst.

Gruß Frank
 

rumknapser

Benutzer
Mitglied seit
02. Mai 2013
Beiträge
329
Punkte für Reaktionen
6
Punkte
24
In der Tat!
Rich (BBCode):
> /usr/syno/mysql/bin/mysql --version
/usr/syno/mysql/bin/mysql  Ver 14.14 Distrib 5.1.49, for pc-linux-gnu (i686) using  EditLine wrapper
Der Ort steht bei mir nicht im Pfad, deswegen nahm ich an, es gibt ihn nicht....

Danke!
 

rumknapser

Benutzer
Mitglied seit
02. Mai 2013
Beiträge
329
Punkte für Reaktionen
6
Punkte
24
Hallo nochmal,

ich habe es umsetzen können, bin aber auf Rechteprobleme gestoßen, in der Art, das ich mich auf der DS Konsole zwar mit /usr/syno/mysql/bin/mysql in MySQL einloggen konnte, aber, sobald ich es von "ausserhalb" versucht habe, wurden meine Versuche lapidar mit "ERROR 1045 (28000): Access denied for user ..." abgewiesen.
Es stellte sich heraus, das 3 anonyme User innerhalb von MySQL angelegt waren. Die hatten zwar keinen erlaubten Zugriff, haben mir aber den Zugang verwährt. Näheres hier: MySQL ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)
Nach dem Löschen der User (immer Vooorsicht geboten) hat es dann, wie erwartet einfach und reifunktioniert

Evtl. noch für Interessierte der Cronjob, den ich mir angelegt habe, der mir nun täglich aus einer Datenbank ausgesuchte Felder aus 2 Tabellen verknüpft und in eine Textdatei schreibt:
Rich (BBCode):
#!/bin/sh
cd /volume1/
echo 'select Feld1,Feld2,Feld3 from Tabelle1 INNER JOIN Tabelle2 where Tabelle1.id = Tabelle2.id;' | /usr/syno/mysql/bin/mysql -D DieDatenbank -u user -ppasswort >/volume1/public/ausgabedatei.txt
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat