我正在尝试创建数据仓库。
是否可以从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)
);
使用第一个表中的数据填充上表。
答案 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;
答案 2 :(得分:0)
是的,你可以。您想要的技术称为Extract, Transform and Load (ETL)。您可以使用许多工具,这将有助于您自动化和组织流程。或者你可以推出自己的解决方案。
报告数据库以这种方式由其他数据库提供是很常见的。