2011-12-22 17 views
1

私は現在、mysqldumpでMySQLテーブルをダンプしています。MySQLダンプを使用して 'テーブルが存在する場合、テーブルを更新する'方法

ダンプは現在生産している:私は言ってダンプを希望何

DROP TABLE IF EXISTS `versions`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `versions` (
    `major` int(11) NOT NULL DEFAULT '0', 
    `minor` int(11) NOT NULL DEFAULT '0', 
    `revision` int(11) NOT NULL DEFAULT '0', 
    `build` int(11) NOT NULL DEFAULT '0', 
    `date_installed` datetime NOT NULL, 
    `current` tinyint(4) NOT NULL DEFAULT '0', 
    `product_type` varchar(30) DEFAULT NULL, 
    `product` varchar(30) DEFAULT NULL, 
    `product_class_name` varchar(80) DEFAULT NULL, 
    `lazy_load` tinyint(4) NOT NULL DEFAULT '0', 
    `sitewide` tinyint(4) NOT NULL DEFAULT '0', 
    UNIQUE KEY `versions_pkey` (`product`,`major`,`minor`,`revision`,`build`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

のようなもので、

IF TABLE EXISTS, UPDATE IT TO MATCH THIS STRUCTURE (
    `major` int(11) NOT NULL DEFAULT '0', 
    `minor` int(11) NOT NULL DEFAULT '0', 
    `revision` int(11) NOT NULL DEFAULT '0', 
    `build` int(11) NOT NULL DEFAULT '0', 
    `date_installed` datetime NOT NULL, 
    `current` tinyint(4) NOT NULL DEFAULT '0', 
    `product_type` varchar(30) DEFAULT NULL, 
    `product` varchar(30) DEFAULT NULL, 
    `product_class_name` varchar(80) DEFAULT NULL, 
    `lazy_load` tinyint(4) NOT NULL DEFAULT '0', 
    `sitewide` tinyint(4) NOT NULL DEFAULT '0', 
    UNIQUE KEY `versions_pkey` (`product`,`major`,`minor`,`revision`,`build`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

は、MySQLのダンプを通じて、このことは可能です(または実際に他はmysql-関連ツール)?

おかげ

答えて

3

あなたは事前にスキーマをダンプし、これがDROP TABLE IF EXISTS versions;コマンドを追加バイパスし、CREATE TABLE IF NOT EXISTSCREATE TABLEを変えていくCREATE TABLE

CREATE TABLE IF NOT EXISTSから
mysqldump -u... -p... --no-data --skip-add-drop-table ... --all-databases | sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' > MYSQLSchema.sql 

を変換する必要があるかもしれません。

試してみてください!

+0

これはうまくいきます:) – kaese

+2

特定のDBをエクスポートするには、mysqldump -u myusername -pmypassword --skip-add-drop-table --no-data --single-transaction database_nameを使用しました。 sedの/ CREATE TABLE /存在しない場合のテーブルの作成/ g '> db.sql' – Voles

0

データベースをダンプするときに、DROP TABLEコマンドを生成するフラグを設定/リセットできます。

関連する問題