2016-12-11 4 views
1

Ich versuche, ein Data Warehouse zu erstellen.Kann ich eine Datenbank aus einer anderen Datenbank befüllen

Ist es möglich, eine Tabelle in db1 aus Daten in db2 aufzufüllen.

Zum Beispiel

Unternehmensdatenbanktabelle Strecke

CREATE TABLE ROUTE (
RouteID INTEGER(4) PRIMARY KEY, 
RouteName VARCHAR (50) NOT NULL, 
BoardingStop VARCHAR (50) NOT NULL, 
AlightingStop VARCHAR (50) NOT NULL 
); 

Insert Informationen

INSERT INTO `ROUTE` (`RouteID`,`RouteName`,`BoardingStop`,`AlightingStop`) 
VALUES (1,"ab","B","C") 

Data-Warehouse-Tabelle dimRoute

CREATE TABLE DimROUTE (
RouteID INTEGER(4), 
RouteName VARCHAR (50) NOT NULL, 
BoardingStop VARCHAR (50) NOT NULL, 
AlightingStop VARCHAR (50) NOT NULL, 
PRIMARY KEY(RouteID) 
); 

bevölkern die abo Tabelle mit Daten aus der ersten Tabelle.

+1

Gibt es einen Grund, warum Sie Tabellen nicht kopieren können? –

Antwort

0

Sie brauchen nur ein paar Abfragen eine Tabelle zu klonen (mit ihren Indizes und Schlüssel) füllen sie dann mit den Aufzeichnungen:

CREATE TABLE DimROUTE LIKE ROUTE; 
INSERT DimROUTE SELECT * FROM ROUTE; 

Demo SQL Fiddle

1

Sie aus einer Tabelle in eine andere Tabelle kopieren mit INSERT INTO ... SELECT. Siehe Dokumentation hier: http://dev.mysql.com/doc/refman/5.7/en/insert-select.html

Sie können zwischen Tabellen in verschiedenen Datenbanken auf derselben MySQL-Instanz kopieren, sofern Sie über Berechtigungen für beide Datenbanken verfügen. Verwenden Sie einfach databasename.tablename Syntax:

INSERT INTO warehouse.DimRoute 
    SELECT * FROM corporate.Route; 

Wenn die Datenbanken auf verschiedene MySQL Instanzen gehostet werden, können Sie Daten aus der Unternehmensinstanz und Import in dem Data-Warehouse-Instanz-Dump mit mysqldump. Da Ihre Tabelle im Data Warehouse anders benannt ist, ist dies ein wenig schwierig.

Sie könnten die Daten an ihrem ursprünglichen Tabellennamen wiederherstellen, und dann die Tabelle umbenennen:

$ mysqldump --host=corporate corp_dbname ROUTE > route-dump.sql 
$ mysql --host=datawarehouse dw_dbname < route-dump.sql 
$ mysql --host=datawarehouse -e "RENAME TABLE ROUTE TO DimROUTE" dw_dbname 

(ich der Kürze halber Benutzer/Passwort-Optionen verlasse, aber ich schlage vor, Sie die Konfigurationsdatei verwenden für diese.)

0

Ja, Sie können. Die gewünschte Technik heißt Extract, Transform and Load (ETL). Es gibt eine Reihe von Tools, mit denen Sie den Prozess automatisieren und organisieren können. Oder Sie können Ihre eigene Lösung rollen lassen.

Es ist durchaus üblich, dass Datenbanken auf diese Weise von anderen Datenbanken gespeist werden.

Verwandte Themen