我今天想知道是否可以通过一个查询将数据从一个数据库传输到另一个数据库。说我有两个表:
CREATE TABLE `Table_One` (
`ID` int(11) NOT NULL auto_increment,
`Type_ID` int(11) NOT NULL,
`Title` varchar(255) NOT NULL,
`Date` varchar(100) NOT NULL,
`Address` varchar(100) NOT NULL,
`Town` varchar(100) NOT NULL,
`Desc` longtext NOT NULL,
`Inserted` varchar(100) NOT NULL,
`Updated` varchar(100) NOT NULL,
`User_ID` int(11) NOT NULL,
`Pending` varchar(255) NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=80 DEFAULT CHARSET=latin1;
和
CREATE TABLE `Table_Two` (
`ID` int(11) NOT NULL auto_increment,
`Title` varchar(255) NOT NULL,
`Town` varchar(255) NOT NULL,
`Desc` varchar(255) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我正在考虑按照以下方式做一些事情
INSERT INTO Table_Two (0,SELECT Title, Town, Desc FROM Table_One)
但这似乎不对,因为Table_Two怎么知道Table_One在另一个数据库中?我可以使用架构文件进行更具体的查询吗?甚至不使用服务器端语言也可以做到吗?
谢谢,
李维
最佳答案
是的,有办法。在查询中将表名加上相应的数据库前缀,例如(如果您正在从Table_Two
的数据库运行查询:
INSERT INTO Table_Two (Field1, Field2, Field3)
SELECT t.Field1, t.Field2, t.Field3 FROM anotherdb.Table_One t;
从MySQL文档
您可以将默认数据库中的表称为tbl_name或db_name.tbl_name来显式指定数据库。您可以将列称为col_name,tbl_name.col_name或db_name.tbl_name.col_name。您无需为列引用指定tbl_name或db_name.tbl_name前缀,除非该引用不明确。有关需要更明确的列引用形式的歧义示例,请参见第8.2.1节“标识符限定符”。
关于mysql - 有没有办法将信息从一个数据库转移到另一个数据库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1786963/