2012年08月10日

MySQLで既存のテーブルのCREATE文を取得

既存のデータベース/テーブルの、CREATE文を取得する方法。メモってたCREATE文をロストしたとか、他人の作ったテーブルで中身がよくわからん、と言った時に使えるかも。(mysqldump を --no-data で走らせてもいいけどな)

・既存のデータベース中にどんなテーブルがあるか調べる
SHOW TABLES で、データベース内のあるテーブル名のリストが取れる。
mysql> SHOW TABLES;
+------------------------------------------+
| Tables_in_usodb |
+------------------------------------------+
| attacker_ahoaho |
| abyorn_hogehoge |
:
+------------------------------------------+
206 rows in set (0.01 sec)

mysql>

・テーブルのCREATE文を取得する
SHOW CREATE TABLE (tbl_name) で、そのテーブルのCREATE文が取れる。
mysql> SHOW CREATE TABLE zenra_config\G
*************************** 1. row ***************************
Table: zenra_config
Create Table: CREATE TABLE `zenra_config` (
`zenraid` varchar(64) CHARACTER SET sjis COLLATE sjis_bin NOT NULL,
`title` varchar(512) CHARACTER SET sjis COLLATE sjis_bin DEFAULT NULL,
`text` mediumblob,
`remark` varchar(512) CHARACTER SET sjis COLLATE sjis_bin DEFAULT NULL,
PRIMARY KEY (`zenraid`),
CONSTRAINT `fk_znrcfg_aid` FOREIGN KEY (`zenraid`) REFERENCES `zenra_pri` (`zenraid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=sjis
1 row in set (0.00 sec)

mysql>


・というわけで、この2つを使ってこんなスクリプトを書けば、データベース内のテーブルのCREATE文を浚ってくれる。
#!/bin/sh

# mysqlコマンドと引数
SCRIPT_MYSQL="mysql -p[YOUR_PASS] -u [YOUR_NAME] [YOUR_DB]"

# 出力ファイル
FILE_CREATES=tablecreatesql.txt

rm -f ${FILE_CREATES}

for t in `echo "SHOW TABLES" | ${SCRIPT_MYSQL}`
do
echo "SHOW CREATE TABLE $t\G" | ${SCRIPT_MYSQL} >> ${FILE_CREATES}
done
タグ:Linux MySQL
posted by usoinfo at 07:43 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]