2016-06-20 11 views
0

先月データベースをmysqldumpから入手しました。今、データベース内のすべてのテーブルは、余分な列を追加している、と言う:mysql:挿入するカラムのデフォルト値を設定する

country varchar(20) not null. 

「US」に設定され、国を使用してデータベースにダンプ・ファイルをインポートする方法?データベースには他の国のデータがあるため、データベースを削除して再作成することはできません。

手動で私はダンプSQLファイルに二つのことを行う必要があります。

1. remove all create table statements, 
2. add country("US") to all insert statements. 

が、SQLダンプファイルは巨大です。これを達成する良い方法はありますか?おかげさまで

+1

ダンプファイルには、右の列 'country'が含まれていませんか?そして、 'US'という値を持つすべてのテーブルに' country'カラムを追加しますか?私は正しい? – 1000111

+0

これを行う最もクリーンな方法は、 'country'カラムのデフォルト値に設定することができますが、これには' ALTER TABLE'文を発行する必要があります。 –

+0

これに関連するN個のテーブルが見つかり、ダンプを別のファイル名にコピーします。それらのNの新しいテーブル名にfind-and-replace-allを使用してテーブル名を微調整します。これらは新しいテーブル名になります。そのスクリプトを実行します。今度はあなたのデータベースには米国だけのN個の新しいテーブルがあります。続行する。それ以降は何をするつもりであるのか(つまり、他のテーブルへの挿入など?USは挿入物のリテラルとして?) – Drew

答えて

0

のALTER TABLE your_table ADD国VARCHAR(20)デフォルト "US"

+0

データベースはWebアプリケーションの背後で実行されており、多くのユーザーが同時にアクセスしています。それは約200のテーブルを含む。テーブルを十分に改造していますか?ダンプされたSQLファイルを処理するプログラム的な方法(ツール)はありますか?ありがとう。 – Dave

+0

私はalter_tableが最適なオプションだと思います。より少ないユーザーで数時間で操作を行い、ログを使用してダンプの瞬間からクエリを登録します。スクリプトを使用してすべてのテーブルを反復して更新することができます。操作のログがない場合は、unixのdiffを使用して2つのファイルの違いを比較し、差分を保存して更新されたDBを持つようにすることができます – CiroRa

関連する問題