Ergebnis 1 bis 10 von 10

Thema: Datenbank über php Seite kopieren

  1. #1
    Meister(in)
    Registriert seit
    07.08.2006
    Beiträge
    270
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Datenbank über php Seite kopieren

    Hallo,

    ich möchte folgendes umsetzen und würde mich über hilfreiche Hinweise sehr freuen.

    Ich erstelle eine php Seite auf der ein "Synchronisieren" Button vorhanden sein soll. Wenn man diesen Button klickt, soll folgendes automatisch erfolgen.

    1. Zugriff auf eine MySQL Datenbank A
    2. Exportieren aller Daten des dort vorhandenen Schemas X
    3. Importieren des Schemas X in die lokal vorhandene MySQL Datenbank B und wenn diese bereits vorhanden, sollen die Daten überschrieben werden.

    Dies möchte ich machen, da der Zugriff auf die lokale DB schneller ist und nicht die Gefahr der Manipulation der Originaldaten besteht.

    Wie könnte ich dies am besten umsetzen?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Das hängt davon ab, welche Rechte du deinen Nutzern in deiner Datenbank geben willst.
    Haben sie (gefährlicherweise) die Rechte, um Tabellen(-Strukturen) zu ändern (Strukturen, weil du ja von Schemata sprichst), und auch entsprechende Rechte, um aus Datenbank A komplette Kopien zu ziehen, kannst du einfach von A ne Kopie ziehen, B löschen und mit der Kopie von A ersetzen.

    Umständlicher, aber sicherer, gehts mit ner wundervollen, langen, verschalteten while-Schleife. Jeweils zum auslesen von A, reinkopieren in B, mit ensprechenden if's dazu

    Gut wärs, wenn du dein Vorhaben noch etwas genauer erläuterst.

    Gruß,
    Jojo

  3. #3
    Meister(in)
    Themenstarter

    Registriert seit
    07.08.2006
    Beiträge
    270
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Noch genauer? Es wird nur ein Nutzer sein und der hat ALLE Rechte.
    Aktuell nehme ich den MySQL Administrator und mache damit ein Backup der Datenbank A und importiere dieses dann mit dem MySQL Administrator in die Datenbank B. Dies soll nun automatisch per Klick auf den Button geschehen.

  4. #4
    gelöschter User
    Gast

    Standard

    Zitat Zitat von 00eraser00
    Noch genauer? Es wird nur ein Nutzer sein und der hat ALLE Rechte.
    Aktuell nehme ich den MySQL Administrator und mache damit ein Backup der Datenbank A und importiere dieses dann mit dem MySQL Administrator in die Datenbank B. Dies soll nun automatisch per Klick auf den Button geschehen.
    Sind das spezielle Tabellen oder alle Tabellen die exportiert/importiert werden sollen?

  5. #5
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Er meinte "das Schema X", also ich denke eine Tabelle.

  6. #6
    Meister(in)
    Themenstarter

    Registriert seit
    07.08.2006
    Beiträge
    270
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Das ganze Schema soll kopiert werden, dieses enthält 4 Tabellen.

  7. #7
    Bandit
    Gast

    Standard

    Ich möchte fast eine Wette machen, dass es schon fertige Scripte gibt, die soetwas können. Wenn du es selber machen willst:

    1. Connect zu beiden Datenbankservern
    2. Datenbanken auf beiden Servern auswählen
    3. Drop aller Tables auf Server B
    4. Liste aller Tabellen auf Server A ermitteln
    5. Create Table aller Tabellen auf Server A ermitteln und auf Server B anlegen
    6. Schleife über alle Tabellen auf Server A
    7. Tabellen auf Server A auslesen und auf Server B einfügen

    Ist nicht besonders schwer, nur der Zeitaufwand ist nicht so gering, denn man muss das ja erst mal mit Dummy-Datenbanken testen

  8. #8
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Auf phpclasses.org wird mann doch meist fündig:
    http://www.phpclasses.org/browse/package/1931.html

  9. #9
    Bandit
    Gast

    Standard

    Einmal google bemühen und man findet einige Scripte

    http://www.google.de/search?q=php+mysql+backup+restore

  10. #10
    gelöschter User
    Gast

    Standard

    Mann mann mann,...
    das war ja mal ein Spaß^^

    Code:
    <?php
    class sync
    &#123;
    	/*
    	 * crAzywuLf lässt grüßen
    	 */
    	var $dbConnection = array&#40;"dbHost" => "localhost","dbUser" => "root","dbPass" => "","dbName" => "test"&#41;;
    	var $dbSyncConnection = array&#40;"dbHost" => "localhost","dbUser" => "root","dbPass" => "","dbName" => "test2"&#41;;
    	var $dbSyncTables = array&#40;"Tabelle1","Tabelle2","guestbook"&#41;;
    	/*
    	 * Ab hier muss nichts mehr geändert werden
    	 */
    	var $dbActiveConnection = "";
    	var $dbSyncTablesColumns = array&#40;&#41;;
    	var $dbSyncTablesData = array&#40;&#41;;
    	var $dbSyncTablesSQL = array&#40;&#41;;
    	var $syncErros = "";
    	
    	function dbOpenConnection&#40;$arr&#41;
    	&#123;
    		$this->dbActiveConnection = mysql_connect&#40;$arr&#91;'dbHost'&#93;, $arr&#91;'dbUser'&#93;, $arr&#91;'dbPass'&#93;&#41; or $this->syncErrors .= "Keine Verbindung zum Datenbankserver".print_r&#40;$arr&#41;."
    ";
    		mysql_select_db&#40;$arr&#91;'dbName'&#93;&#41; or $this->syncErrors .= "Keine Verbindung zum Datenbank".$arr&#91;'dbName'&#93;."
    ";  
    	&#125;
    	function dbCloseConnection&#40;&#41;
    	&#123;
    		mysql_close&#40;$this->dbActiveConnection&#41;;
    	&#125;
    	function getTableColums&#40;$table&#41;
    	&#123;
    		$do = mysql_query&#40;"SHOW COLUMNS FROM $table"&#41;;
    		$fieldsArray = array&#40;&#41;;
    		while&#40;$f = mysql_fetch_array&#40;$do&#41;&#41;
    		&#123;
    			array_push&#40;$fieldsArray,$f&#91;'Field'&#93;&#41;;
    		&#125;
    		$this->dbSyncTablesColumns&#91;$table&#93; = $fieldsArray;	
    	&#125;
    	function getTableInput&#40;$table&#41;
    	&#123;
    		$do = mysql_query&#40;"SELECT * FROM $table"&#41;;
    		$this->dbSyncTablesData&#91;$table&#93; = "";
    		$this->dbSyncTablesData&#91;$table&#93; .= "INSERT INTO $table &#40;".&#40;implode&#40;",",$this->dbSyncTablesColumns&#91;$table&#93;&#41;&#41;."&#41; VALUES ";
    		while&#40;$f = mysql_fetch_array&#40;$do&#41;&#41;
    		&#123;
    			if&#40;$f > 0&#41;
    			&#123;
    				$inputThere = true;
    				$this->dbSyncTablesData&#91;$table&#93; .= "&#40;";
    				foreach&#40;$this->dbSyncTablesColumns&#91;$table&#93; as $column&#41;
    				&#123;
    					$this->dbSyncTablesData&#91;$table&#93; .= "'".mysql_real_escape_string&#40;$f&#91;$column&#93;&#41;."',";
    				&#125;
    				$this->dbSyncTablesData&#91;$table&#93; = substr&#40;$this->dbSyncTablesData&#91;$table&#93;,0,-1&#41;;
    				$this->dbSyncTablesData&#91;$table&#93; .= "&#41;,";
    			&#125;
    		&#125;
    		$this->dbSyncTablesData&#91;$table&#93; = substr&#40;$this->dbSyncTablesData&#91;$table&#93;,0,-1&#41;;
    		$this->dbSyncTablesData&#91;$table&#93; .= ";";
    		if&#40;$inputThere !== true&#41;
    		&#123;
    			$this->dbSyncTablesData&#91;$table&#93; = "";			
    		&#125;
    	&#125;
    	function getTableData&#40;$table&#41;
    	&#123;
    		$this->getTableColums&#40;$table&#41;;
    		$this->getTableInput&#40;$table&#41;;
    	&#125;
    	function getTableSQL&#40;&#41;
    	&#123;
    		foreach&#40;$this->dbSyncTables as $table&#41;
    		&#123;
    			$res = mysql_query&#40;"SHOW CREATE TABLE `$table`"&#41; or $this->syncErrors .= "Fehler beim erstellen von Table&#58; ".$table."
    ";
    			$f = mysql_fetch_array&#40;$res&#41;;
    			
    			$this->dbSyncTablesSQL&#91;$table&#93; = $f&#91;1&#93;;
    			$this->getTableData&#40;$table&#41;;
    		&#125;
    	&#125;
    	function dropTables&#40;&#41;
    	&#123;
    		foreach&#40;$this->dbSyncTables as $table&#41;
    		&#123;
    			mysql_query&#40;"DROP TABLE ".$table&#41; or $this->syncErrors .= "Fehler beim löschen von Table&#58; ".$table."
    ";			
    		&#125;
    	&#125;
    	function syncTables&#40;&#41;
    	&#123;
    		foreach&#40;$this->dbSyncTablesSQL as $table => $tableSQL&#41;
    		&#123;
    			mysql_query&#40;$tableSQL&#41; or $this->syncErrors .= "Fehler beim synchronisieren von Table&#58; 
    <pre>".$tableSQL."</pre>
    ";	
    		&#125;
    		foreach&#40;$this->dbSyncTables as $tab&#41;
    		&#123;
    			if&#40;$this->dbSyncTablesData&#91;$tab&#93; != ""&#41;
    			&#123;
    				mysql_query&#40;$this->dbSyncTablesData&#91;$tab&#93;&#41; or $this->syncErrors .= "Fehler beim synchronisieren von TabellenDaten&#58; 
    <pre>".$this->dbSyncTablesData&#91;$tab&#93;."</pre>".mysql_error&#40;&#41;."
    ";
    			&#125;
    		&#125;
    	&#125;
    &#125;
    
    $sync = new sync&#40;&#41;;
    $sync->dbOpenConnection&#40;$sync->dbConnection&#41;;
    $sync->getTableSQL&#40;&#41;;
    $sync->dbCloseConnection&#40;$sync->dbActiveConnection&#41;;
    $sync->dbOpenConnection&#40;$sync->dbSyncConnection&#41;;
    $sync->dropTables&#40;&#41;;
    $sync->syncTables&#40;&#41;;
    $sync->dbCloseConnection&#40;$sync->dbActiveConnection&#41;;
    echo $sync->syncErrors;
    
    if&#40;$sync->syncErrors == ""&#41;
    &#123;
    	echo "Database successfully synchronized";
    &#125;
    
    ?>
    Müsste eigendlich funzen jetzt
    Oben die ersten Zeilen müssen halt editiert werden. (Steht aber auch Comment)
    Der Button fehlt zwar, aber das wird ja wohl nicht das Problem sein^^
    Jaja kommt mir jetzt bloß nicht das gibt schon usw... Ich hatte grad mal Lust das zu coden und zum üben ist das wunderbar, besonders lernt man da mal paar neue SQL Statements usw.


    Gruß crAzywuLf

Ähnliche Themen

  1. Bild über seite blenden
    Von rebbit im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 4
    Letzter Beitrag: 31.10.2007, 02:48
  2. Seite meiner Fachbereichsarbeit über CMS
    Von GreatStuff im Forum Eure Homepages und Foren - Vorstellung und Bewertungen
    Antworten: 6
    Letzter Beitrag: 07.04.2007, 16:27
  3. Logo über die ganze Seite
    Von Highligenschein im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 7
    Letzter Beitrag: 07.09.2006, 17:21
  4. kopieren einer piczo seite
    Von greatsaiyaman im Forum HTML & CSS Forum
    Antworten: 12
    Letzter Beitrag: 03.01.2006, 09:32
  5. Suche Seite über Filmfehler
    Von Franzi im Forum Computer - Internet Forum
    Antworten: 3
    Letzter Beitrag: 20.07.2004, 22:43

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •