2011-08-05 25 views
0

私はテーブル - customers_oldを持っています。このテーブルのすべてのデータをコピーしたいので、mysqldumpを使用します。mysqlのバックアップと異なるカラム名のテーブルへの復元

データをcustomers_newという表にリストアする必要があります。これはcustomers_old表と異なる列名を持ちます。

どうすればよいですか?

INSERT..SELECTは、手動で各行をコピーするためのものですか?

親切にあなたのSQLダンプファイル内の列とテーブルの名前を編集したり、新しいテーブルをインポートすることができどちらか

おかげ

答えて

0

はその後、古いテーブルからINSERT SELECTを行うことをお勧めします。

0

手動でダンプファイルをハックアップして列名を変更しない限り、これを直接行うことはできません。 1つのオプションは、ダンプをテンポラリ・データベース/テーブルにロードし、次にALTER TABLEクエリを実行して、カラム名を任意に変更することです。または、INSERT/SELECTを実行することもできますが、データを2倍にすることになります(名前が変更された新しいテーブル/フィールド+古い元のテーブル/フィールド)。 PMVの答えに拡大すること

+0

のALTER TABLEデータをコピーし、あなたが思うだろうよりも、そのアプローチにはあまり差がありますので、その後、古いテーブルを削除します。

を参照してください。 – Johan

+0

の場合のみ、データ型を変更してください。列の名前を変更してもそれはありません。 –

+0

私はダンプファイルをハックするのが当然の方法だと思います。一度私は何かを働いている投稿します – kelly

2

:あなたは、列名を変更することができ、あなたの古い列をエイリアシングすることにより

CREATE TABLE customers_new AS SELECT col1 AS new_col1, col2 AS new_col2 FROM customers_old 

INSERT INTO newtable (column1_new, column2_new, ...) 
    SELECT column1_old, column2_old FROM oldtable 
関連する問題