Mysql 2 Datenbanken Fusionieren

Nokman

Grünschnabel
Guten Tag
MySQL
  • Server: Localhost via UNIX socket
  • Server Version: 5.5.35-0+wheezy1
  • Protokoll-Version: 10
  • MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Webserver
  • Apache/2.2.22 (Debian)
  • MySQL-Client-Version: 5.5.35
  • PHP Erweiterung: mysqli
    b_help.png


Ich bin Leihenhaft in sachen MySQL Datenbank Grundbegriffe kann ich und Verstehe ich auch es ist ja nicht viel anders als beim c++ zumindestens bei der Logic.

Meine Sache ist die ich habe 2 Datenbanken Die beiden haben denn Selben aufbau und Struktur nur der Inhalt ist anders. In der Datenbank sind 6 Tabellen wovon nur 3 von Interesse sind die zusammen zu schreiben.

Struktur:
Code:
# Spalte Typ Kollation Attribute Null Standard Extra 

1  uid int(12)  
Nein kein(e) AUTO_INCREMENT 



 2  name varchar(32) latin1_swedish_ci  
Nein "" 



 3  playerid varchar(50) latin1_swedish_ci  
Nein 0 



 4  cash int(100)  
Nein 0


 5  bankacc int(100)    
Nein 0 



 6  coplevel enum('0', '1', '2', '3', '4', '5', '6', '7') latin1_swedish_ci  
Nein 0 



 7  cop_licenses text latin1_swedish_ci  
Ja NULL 



 8  civ_licenses text latin1_swedish_ci  
Ja NULL 



 9  cop_gear text latin1_swedish_ci  
Ja NULL 



 10  arrested tinyint(1)  
Nein 0


 11  aliases text latin1_swedish_ci  
Ja NULL 



 12  adminlevel enum('0', '1', '2', '3') latin1_swedish_ci  
Nein 0 



 13  donatorlvl enum('0', '1', '2', '3', '4', '5') latin1_swedish_ci  
Nein 0 



 14  civ_gear text latin1_swedish_ci  
Ja NULL 



 15  blacklist tinyint(1)  
Nein 0


 16  lastlogin varchar(32) latin1_swedish_ci  
Nein [] 



 17  dmg text latin1_swedish_ci  
Ja NULL 



 18  hunger text latin1_swedish_ci  
Ja NULL 



 19  thirst text latin1_swedish_ci  
Ja NULL 



 20  pos varchar(32) latin1_swedish_ci  
Nein [] 



 21  posc varchar(32) latin1_swedish_ci  
Nein [] 



 22  zeit int(11)  
Nein 0


 23  jail_time int(11)  
Nein 0


 24  erstellt timestamp  
Nein CURRENT_TIMESTAMP

Dabei ist playerid das Einzigste Konstante was denn Spieler in beiden Datenbanken Vergleichen kann ob er schon verhanden ist.

und die ID ist auf grund von AUTO_INCREMENT in beiden ja Doppelt vorhanden somit müsste die eine nach der Anderen eingetragen werden.

und so Ist es auch bei denn beiden Anderen Tabellen wo die Playerid die Konstante ist.

Ich hoffe ich konnte euch so ein wenig meine Lage schildern und Danke für jede Weiterhilfe in der Sache der Datenbank Zusammefügen.
 
Zuletzt bearbeitet von einem Moderator:
Nur so als Idee: In der einen Datenbank alle relevanten IDs um einen bestimmten Bereich erhöhen. Wenn du mit Fremdschlüsseln arbeitest, solltest du die ggf. erstmal notieren, dann entfernen.

Dann müsstest du den AUTO_INCREMENT noch auf den aktuellen Stand bringen. Beispiel:

SQL:
ALTER TABLE tabelle AUTO_INCREMENT=10000

Dann Export der Datenbank, in der die Indizes angepasst wurden und import in die andere.
 
Hi

DBs sind nicht viel anders als C++?
Naja... laufen beide auf elektronischen Computern :)

Mach vom PHPmyAdmin-Teil vllt. Screenshots
(die hier direkt im Forum hochgeladen Werden können).

So ist da nämlich ziemlich unlesbar und unverständlich
(was sind diese "Nein"? Was gehört zu welcher der drei Tabellen?)
Außerdem hast du Links zu deinem Server mitkopiert.
Werden aus Sicherheitsgründen entfernt...

Und was ist eigentlich das Problem?

PS: Wenn du UTF8 hast, woher kommt dann das Schwedisch?

@saftmeister: Du kannst das lesen? :D
 
Vielen Dank für das Bearbeiten.


Ich war beim Schreiben Wohl auch etwas Übereifrig.


Zu denn nicht viel anders war eher Sarkastisch gemeint. Daher beide sind ja Logisch :D


Im ersten Beitrag das ist die Tabelle Namens Player, Ich habe nur diese Struktur hier Veröffentlicht da ich denn Beitrag nicht zu sehr in die Länge ziehen wollte. Die Datenbank Besteht aus einen Import welchen ich nur erweitert habe dadurch kommt das schwedisch.



Code:
# Spalte Typ Kollation Attribute Null Standard Extra






Das Nein steht in der Tabelle bei Null daher ob der Standard wert Null ist oder nicht.


Das Problem meiner Seite ist ich wies nicht wie ich 2 Datenbanken mit dem Selben Aufbau zusammenführen kann wobei Doppeleinträge nach PlayerID Behoben/Ignoriert also nicht vorgenommen werden.phpmyadmin1.jpgphpmyadmin2.jpg
 
Bestimmt bietet MySql von sich aus merge tools für Datenmigration. Die kenne ich aber selber nicht. Da gibt es bestimmt andere die dir mehr dazu sagen können.

Handelt es sich um viele Records? Falls nicht, kannst du ja auch einfach auf deiner 2ten DB insert scripts für die erste DB erstellen.
Ich habe dann mal angenommen, dass die Strukturen und Datentypen identisch sind. Zudem wenn du PlayerID 1, Hans auf beiden DB's hast, den aber in der 1sten DB nur einmal haben willst, sollte das ja kein Problem sein, wenn du in deiner 1sten DB die PlayerID als PK/unique key definiert hast. Die DB wird dir dann automatisch verweigern einen zweiten Record mit PlayerID einzufügen.
Und falls du sowieso alle aus der 2ten haben willst, kannst du ja z.B. deren ID jeweils um 1000000 erhöhen.

Hier ein Denkanstoss wie das ganze aussehen könnte.
SQL:
select
CONCAT('INSERT INTO t1 (playerid, name) VALUES (', playerid, ',', name, ');')
as insert_query from t1
union all
select 'COMMIT;' from dual;
 

Neue Beiträge

Zurück