2011-09-19 36 views
1

我想从一个数据库(比如说source_db)复制一个表(比如说tbl_1)到另一个数据库(比如target_db),其中下面是考虑事项将表从一个数据库复制到另一个,维护表结构并将其重命名

  • 表的结构应予以保留,包括主键和 自动增量键

  • 在创建tbl_1的副本,我需要重新命名它cpy_tbl_1

怎么可能使用查询

P.S.我知道会有很多类似的问题,但我也有特别的考虑。

回答

4
CREATE TABLE db_target.cloned_table 
SELECT * 
FROM db_source.source_table; 

随着前一句表将只用领域,它的类型,但没有钥匙,约束下创建,发动机将被设置。您可以手动指定它们在同一个句子是这样的:

CREATE TABLE db_target.cloned_table (
    a INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (a), KEY(b) 
) ENGINE=MyISAM 
SELECT b,c FROM db_source.source_table; 

mysql create table doc

+0

的mysql> CREATE TABLE CSI-就业port.jf_appointment SELECT * FROM CSI-EMP-portal.jf_appointment; 错误1064(42000):您的SQL语法错误;请查看与您的MySQL服务器版本相对应的 手册,以便在'-employment-port.jf_appointment SELECT * FROM csi-emp-portal附近使用正确的语法。jf_appointment'在第一行 mysql>不工作 –

+0

db /表名不会被解析,因为你打算我猜是因为减号,试着用''把它们括起来,例如:\'your_db_name \'。\'your_table_name \ ' –

+1

它没有传递主键和自动增量。但是我们可以手动设置它。没什么大不了 – Tanmay

1

可以实现这一如下:

首先创建TARGET_DB

的MySQL>创建数据库TARGET_DB;

然后使用它

mysql> use target_db;

然后用名称cpy_tbl_1

其作为

MySQL的完成创建TB1的结构>创建表cpy_tbl_1像source_db.tb1;

然后只是复制数据。

mysql> insert into cpy_tbl_1 select * from source_db.tb1;

和检查结果

0

,如果你能使用shell脚本,然后mysqldump是一个强大而灵活的选择...特别是如果你可以使用一个小sed做搜索和替换。

简单的版本:

mysqldump $SOURCE $TABLE | mysql $TARGET 
相关问题