2012-05-31 202 views
0

我敢肯定有在计算器这样的问题,但我只是C'T找到它:(新字段添加到现有的表

我有2个数据库中具有相同的数据(“开发商”数据库和“生产”数据库) “生产”数据库是“活”的数据库 - sitve游客看到这个数据 “开发商”数据库是我在我的本地服务器上创建新功能的数据库

我情况时,我加入到“开发者”。数据库中的一些新表和一些旧表中的新字段

现在我必须复制这个新创建的字段ds和表格转换为“生产”数据库(但只有结构,数据不应复制,“生产”数据库中的数据不得更改)。

UPD:也许有解决方案,我可以从开发数据库使数据库结构转储,当我将其导入到生产数据库,它会自动从所有表

我应该使用什么样的功能添加所有新的领域?

谢谢。

+0

看不到问题。保存用于更新开发人员数据库的DDL脚本,并将其用于生产数据库。也就是说,如果您使用DDL命令(而不是交互式地进行更改,请使用一些具有良好UI的工具)。如果你不这样做,那么也许是时候了。 :) –

回答

2
+0

看来他也想创建表 –

+0

但有了这个功能,我必须自己指定所有的字段。也许有解决方案,我可以做数据库结构转储,当我将它导入到生产数据库时,它会自动添加所有表中的所有新字段 – Dmitry

+0

然后,您需要'mysqldump',它可以将SQL数据库结构+数据转储为SQL语句可以反馈为“真实”的查询。 –

0

alter an existing table

alter table tablename add column newcolumn tinyint(1) default 1 AFTER othercolumn 

create a new table

CREATE TABLE `newtablename` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `newcolumn` int(10) unsigned NOT NULL, 
    PRIMARY KEY (`id`), 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 
0
  • 只复制您可以像使用结构:

    jcho360> create table t3 like t2;

    Query OK, 0 rows affected (0.05 sec)

如果你想复制内容创建结构后,您可以使用:

INSERT INTO t3 SELECT * FROM t2; 
  • 如果你想与数据复制可以使用(没有结构,我的意思是,PK ,FK等)

    mysql> create table t4 as select * from t1;

当然

您可以使用备份来恢复表太

  • 如果要添加新列,您可以使用

    alter table tablename add column newcolumn vartype;

,如果你想使用一个表从您可以使用查询呼叫的第一数据库和后来的名称的另一个数据库,就像

select * from database.tablename; 

记住用户需要允许其他DB过。

+0

创建表t3像t2 - 这个查询是好的,但我已经有表t3 - 我不需要创建它,我只需要修改它的字段,他们成为相同的t2(但所有数据保持不变)我可以通过手工来完成这个工作,我自己指定了所有的字段,但是这需要很长的时间,我需要自动完成这项工作 – Dmitry

+0

如果你不想硬编码,最好的方法是用一些软件界面,比如mysql Administration或workbench,还有那些你可以对表执行任何操作的操作,记得在开始编辑之前进行备份。 – jcho360

相关问题