Tabelle aus 2. Datenbank verknüpfen/verbinden/einfügen ...

NobodyBody

Neuer Benutzer
Beiträge
4
... oder wie immer man das nennen will.

Hallo,
unter Access kann man eine Tabelle aus einer Datenbank in einer anderen Datenbank verknüpfen, so dass man diese Tabelle wie eine 'normale' Tabelle behandeln kann.

Ist das in MySQL auch möglich?

Zur Veranschaulichung ein kleines Beispel:
In Access ist es z.B. möglich die Tabelle A aus der Datenbank DB_A in der Datenbank DB_B zu verknüpfen, so daß die Tabelle A in DB_B angezeigt wird.
Mann kann diese dann in DB_B benutzen, als ob sie dort erstellt wurde, Daten werden aber weiterhin in DB_A gespeichert.

Das Problem ist, ein vorhandenes Programm greift auf die Datenbank DB_A, DB_B, ... zu, in denen die Tabelle A immer die gleichen Daten enthält.
Um diese nicht doppelt zu halten möchte, ich die Tabelle A mit/in den verschiedenen Datenbanken verknüpfen.

Danke!

mfg
NobodyBody
 
Werbung:
Grundlegend hätte ich jetzt gesagt: Databaselink...
Aber... gibts die überhaupt in MySQL ?
Falls ja - da sähe die Syntax in etwa so aus: schema.table@databaselink
 
Hallo,

Vielen Dank für die Antworten.

Wie ich schon geschrieben habe, hab ich keinen Einfluss aus SQL-Abfragen oder ähnliches.
Die Tabelle ( in meinem Bespiel Tabelle A ) aus der externen Datenbank ( in meinem Bespiel DB_A ) muß in der Datenbank ( DB_B ) auch als Tabelle A angezeigt werden,
damit Programme, die auf die Datenbank DB_B zugreifen diese auch als Tabelle erkennen.

Falls ja - da sähe die Syntax in etwa so aus: schema.table@databaselink
Wenn das so geht, wie muß ich das dann angeben?

Gruß
NobodyBody
 
Hallo,
ich bin leider nicht der MySQL-Fachmann, darum war meine Frage, wie ich diesen databaselink anlege.

Ich hab Dir eine, vermutlich funktionierende, Lösung gezeigt. Das sollte funktionieren, solange a) beide datenbanken auf derselben MySQL-Instanz laufen und b) die User-Rechte passen. Da brauchst keinen extra databaselink oder so...
 
Hi,

das geht mit der Federated Storage Engine bei MySQL. Ich empfehle dir aber den Umstieg auf MariaDB, die kompatibel mit MySQL ist. Diese hat eine leistungsfähigere Engine "CONNECT"

Hier noch ein LINKL zu MariaDB: https://mariadb.com/kb/en/mariadb/documentation/storage-engines/connect/

Code:
CREATE TABLE federated_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';


Um zu prüfen ob dein MySQL Server die Federated Engine installiert hat:

Code:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.21    |
+-----------+
1 row in set (0,00 sec)

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0,00 sec)

mysql>

Gruss

Bernd
 
Werbung:
Hallo Bernd,
Code:
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

funktioniert ohne Probleme!

Vielen Dank an Alle.

Gruß
NobodyBody
 
Zurück
Oben