2012-05-31 144 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

相關問題