我可以从另一个数据库填充数据库

时间:2016-12-11 18:53:22

标签: mysql database data-warehouse

我正在尝试创建数据仓库。

是否可以从db2中的数据填充db1中的表。

例如

企业数据库表路径

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

插入信息

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

数据仓库表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)
);

使用第一个表中的数据填充上表。

3 个答案:

答案 0 :(得分:1)

您可以使用INSERT INTO ... SELECT从一个表复制到另一个表中。请参阅此处的文档:http://dev.mysql.com/doc/refman/5.7/en/insert-select.html

如果您拥有两个数据库的权限,则可以在同一MySQL实例上的不同数据库中的表之间进行复制。只需使用databasename.tablename语法:

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

如果数据库托管在不同的MySQL实例上,您可以使用mysqldump从企业实例转储数据并导入数据仓库实例。由于您的表在数据仓库中的命名方式不同,这有点棘手。

您可以将数据还原为其原始表名,然后重命名该表:

$ 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

(为了简洁,我省略了用户/密码选项,但我建议您使用配置文件。)

答案 1 :(得分:0)

您只需要几个查询来克隆一个表(带有索引和键),然后用记录填充它:

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

Demo SQL Fiddle

答案 2 :(得分:0)

是的,你可以。您想要的技术称为Extract, Transform and Load (ETL)。您可以使用许多工具,这将有助于您自动化和组织流程。或者你可以推出自己的解决方案。

报告数据库以这种方式由其他数据库提供是很常见的。