CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
Off Topic Area Hierein gehört alles, was nichts mit PHP, MySQL, Apache oder ähnlichem zu tun hat |
07.03.2008, 12:09:52
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
MySqlDump ziehen mit Where Bedingungen
Moin, moin,
gibt es ein Tool, ein PHP-Script, mit dem ein MySql Dump gezogen werden kann, indem auch Where Bedingungen berücksichtigt werden?
Mit PhPMyAdmin kann ich SELECT * FROM DB WHERE durchführen, wie auch mit vielen weiteren Tools. Diese Abfrage muss ich aber manuell durchführen und es wird kein Dump erzeugt.
Innerhalb der MySql-Installation findet sich ein Werkzeug, mysqldump, mit dem auf der Shell, und in Verbindung eines DB-Stopps, entsprechende DB-Auszüge gezogen werden könnten, doch auf der Shell und die DB wird gestoppt. Ach so ja, alternativ zu mysqldump wird noch ein Perl-Script angeboten, doch ich kann kein Perl laufen lassen.
Ich habe mysqldumper getestet, ein sehr gutes Werkzeug mit dem unter anderem auch zumindest schon einzelne Tabellen gewählt werden können, doch eben keine Where Bedingungen auf Datensätze.
Gibt es da ein brauchbares Script?
Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
10.03.2008, 12:06:05
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: MySqlDump ziehen mit Where Bedingungen
Wenn es jemanden interessiert, habe hier eine Lösung gefunden:
http://www.wer-weiss-was.de/theme163...le2952225.html
(Anmerkung: Darf eigentlich noch so ohne weiteres auf andere Websites verwiesen werden, ohne den Betreiber zu fragen?)
Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
10.03.2008, 12:24:55
|
Administrator
|
|
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
|
|
AW: MySqlDump ziehen mit Where Bedingungen
Zitat:
Zitat von Franzx
(Anmerkung: Darf eigentlich noch so ohne weiteres auf andere Websites verwiesen werden, ohne den Betreiber zu fragen?)
|
Aber nur so funktioniert doch das Internet..... Man darf sich nur nicht den Inhalt der Zielseite zu eigen machen.....
Aber ich lasse mich sehr gerne belehren;-)
Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
10.03.2008, 17:09:49
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: MySqlDump ziehen mit Where Bedingungen
Zitat:
Zitat von Damir
Aber nur so funktioniert doch das Internet..... Man darf sich nur nicht den Inhalt der Zielseite zu eigen machen.....
Damir
|
Ja, davon bin ich ja eigentlich auch immer ausgegangen, doch der ein oder andere Artikel im Internet, zu diesem Thema, lässt mich doch manchmal zweifeln! :-)
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
10.03.2008, 17:23:30
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: MySqlDump ziehen mit Where Bedingungen
In Bezug auf die Erstellung dieses Dumps, mit den zu beachtenden Where Bedingungen, stellt sich noch eine Frage!
Erst die Erklärung: Habe mir dieses, im ersten Post verlinkte Script, für mich angepasst. Das mit den WHERE Bedingungen funktioniert einwandfrei und es werden nur die entsprechenden Datensätze ausgegeben. Allerdings werden, obwohl nur bestimmte Felder per SELECT gewählt sind, immer alle Felder eines Datensatzes ausgegeben.
Mir ist bewusst, dass die Tabellen sequentiell, also Datensatz für Datensatz ausgelesen werden, unter Berücksichtigung der WHERE Bedingungen.
Hier die Frage, die sich nicht auf das von mir angepasste Script bezieht, sondern als allgemeine Frage zu betrachten ist:
Warum werden mehr Felder ausgegeben als diese die mit SELECT gewählt sind?
Ist dies immer so, geht es nicht anders bei der Erstellung eines Dumps?
Habe da auch einige frei verfügbare Tools gefunden, mit denen auch nur, wenn überhaupt, die gesamten Tabellen in einer DB zu wählen waren, aber nie noch Felder in den Tabellen.
???
Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
11.03.2008, 12:24:57
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: MySqlDump ziehen mit Where Bedingungen
Eine mögliche Lösung, die meine Aufgabe löst:
Habe das Scritp von Rudy, welches im zweiten Post verlinkt ist, wie folgt angepasst:
PHP-Code:
$dbhost = "localhost";
$dbuser = "root";
$dbpwd = "pass";
$dbname = "datenbank";
$conn = @mysql_connect($dbhost, $dbuser, $dbpwd);
if (!$conn) {
die(mysql_error());
}
mysql_select_db($dbname);
# die folgend zu erzeugende Datei muss Schreibrechte auf dem Server erhalten
$f = fopen("./dump.sql", "w");
# folgend das Wort "Tabellenname" austauschen gegen den wirklichen Tabellennamen
$table = Tabellenname;
fwrite($f,"# Copyright - Wer auch immer und von welcher DB;\n");
# folgend der Tabellenkopf mit Feldbezeichnungen der Tabelle.
fwrite($f,"CREATE TABLE `$table` ( `feld1` varchar(5) character set latin1 NOT NULL default '', `feld2` mediumtext character set latin1, `feld3` date default NULL, `feld4` date default NULL, `feld5` date default NULL, PRIMARY KEY (`feld1`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;\n");
$data = mysql_query("SELECT Tabellenname.feld1,Tabellenname.feld2,Tabellenname.feld3,Tabellenname.feld4,Tabellenname.feld5 FROM `$table` WHERE Tabellenname.feld5 != 1 AND Tabellenname.feld3 IS NULL") or die(mysql_error());
$num = mysql_num_fields($data);
while ($row = mysql_fetch_array($data)){
$line = "INSERT INTO `$table` VALUES(";
for ($i=1;$i<=$num;$i++) {
$line .= "'".mysql_real_escape_string($row[$i-1])."', ";
}
$line = substr($line,0,-2);
fwrite($f, $line.");\n");
}
fwrite($f," \n");
# Möchte man von mehr als einer Tabelle einen Dump erzeugen, mit WHERE-Bedingungen und Spaltenweise Auswahl, dann den folgenden Block kopieren bis --->
$table2 = Tabellenname2;
fwrite($f,"CREATE TABLE `$table2` ( `feld1` varchar(5) character set latin1 default NULL, `feld2` smallint(6) default NULL, `vom` date default NULL, `bis` date default NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;\n");
$data = mysql_query("SELECT Tabellenname2.feld1,Tabellenname2.feld2,Tabellenname2.vom,Tabellenname2.bis FROM `$table2` ") or die(mysql_error());
$num = mysql_num_fields($data);
while ($row = mysql_fetch_array($data)){
$line = "INSERT INTO `$table2` VALUES(";
for ($i=1;$i<=$num;$i++) {
$line .= "'".mysql_real_escape_string($row[$i-1])."', ";
}
$line = substr($line,0,-2);
fwrite($f, $line.");\n");
}
fwrite($f," \n");
# ---> bis hier und direkt dahinter wiede einfügen. Natürlich müssen entsprechend der Tabellenname, die Feldbezeichungen wieder angepasst werden
fclose($f);
echo ("Dump wurde geschrieben!");
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:56:46 Uhr.
|