mysql von db1 in db2 kopieren

...komplette Frage anzeigen

2 Antworten

Hello there,

das macht du genauso. Wenn du für beide Datenbanken die Rechte für INSERT und SELECT Hast, ist das gar kein Problem.

Das machst du dann so:

INSERT INTO db1.member_data_old SELECT *  FROM db2.member_data WHERE worldID = " . $worldid ." AND playerId = " . $playerId ." AND id != ".$data_id." ORDER BY id DESC";

Du kannst einfach den Namen der Datenbank dem Tabellennamen punktgetrennt davorstellen. Fertig. So gehen sogar SELECT-Statements über Tabellen und Datenbanken hinweg, sprich SELECT datenbankname.tabellenname.spalte ;)

MfG

Alex

valvegreen 05.02.2015, 20:40

ok also so:

$db1 = mysqli_connect($host_name, $user_name, $password, $database);
$db2 = mysqli_connect($host_name2, $user_name2, $password2, $database2);

$a = "INSERT INTO db1.member_data_old SELECT *  FROM db2.member_data_old";
mysqli_query($a) OR die("Error: $a <br>".mysqli_error(**WAS HIER REIN DASS DER FEHLER ANGEZEIGT WIRD**));
0
Alextoexplain 05.02.2015, 20:43
@valvegreen

Nein :O Du musst dich doch nicht zweimal verbinden.

Mysqli_connect erstellt eine Verbindung zu einem Server, ich geh davon aus, dass sich die Datenbanken schon noch auf dem selben Server befinden oder?

Außerdem kannst du mysqli_query prozedural nicht ausführen, ohne eine Datenbankverbindung als Ressource mitzugeben. Aber da du in deinem SELECT-Statement dann ja die Datenbank mit angibst, ist es hinfällig eine Standarddatenbank zu setzen, das macht man nur, damit man in regulären Statements nicht jedes Mal den Datenbanknamen bei jeder Tabelle oder Spalte angeben muss.

0
Alextoexplain 05.02.2015, 21:19
@valvegreen

Ahm, in sonem Fall solltest du erwägen, dass du vielleicht eine Master-Slave-Konfiguration aufbaust.

Sprich du hast einen Masterserver, auf den alle Schreibzugänge ausgeführt werden und dann einen oder mehrere Slaveserver, die sich mit dem Master synchronisieren und die Ergebnisse für Lesezugriffe liefern. Bzw. falls es Liveinformationen sind, kann die ebenfalls der Masterserver liefern, da der Slave die vielleicht noch gar nicht hat..

Was genau willst du denn machen? Einfach nur ein Backup?

0
valvegreen 05.02.2015, 21:31
@Alextoexplain

ich habe n hosting paket von 1und1 aktuell kann ich datenbanken erstellen aber nicht bestimmen auf welchem server die landen.

die datenbanken sind 1g groß aber wenn ich alles in eine rein würge dann is die binnen einem halben jahr voll. somit wollte ich die anfallenden daten auf mehrere datenbanken aufteilen.

das ist momentan natürlich nicht das beste aber für den ersten run (um zu sehen ob meine seite angenommen wird) sollte das reichen

das große problem ist dass ich nach 2 monaten bei 500 usern schon 12% der datenbank voll habe. da ich die daten speichern will für eine statistik kann ich se nicht löschen.

größere datenbank hat irgendwann den nachteil, dass sie langsam wird aber da kann mann dein master slave hernehmen.

;-)

1

insert into table1 (select * from table 2)

Alextoexplain 05.02.2015, 20:40

Frage lesen...das hat er doch bereits schon....

1

Was möchtest Du wissen?