dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

mysqldumpでデータのみ/テーブル定義のみをダンプする方法

2011-04-20 22:16:53 | mysql
mysqldumpをオプションなしで実行すると、標準出力にテーブル定義のcreate文とinsert文が出力されます。

insert文だけを出力するには、-t または --no-create-info オプションを指定します。
$ mysqldump -t DB名 テーブル名

テーブル定義だけを出力するには -d または --no-data オプションを指定します。
$ mysqldump -d DB名 テーブル名

テーブル定義だけを出力する方法として、-w でダンプするデータの条件が偽になるようにするという手もあります。
$ mysqldump DB名 テーブル名 -w '0=1'

さらに意味のない方法ですが、show create table を使って create 文を出力することもできます。
show create table は以下のようにテーブル定義を出力します。

mysql> show create table id;
+-------+---------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------+
| id | CREATE TABLE `id` (
`id` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

-s でカラム名を抑制し、-r でエスケープ文字をそのまま出力するようにして、2カラム目だけを cut コマンドで出力します。
$ echo "show create table テーブル名;" | mysql DB名 -s -r
CREATE TABLE `id` (
`id` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

mysqldump -d を使えば、こんな面倒なことはしなくていいんですが。

この記事についてブログを書く
« rubyでflockを使った排他制御... | トップ | wgetでproxyを指定する方法 »

mysql」カテゴリの最新記事