シェルを使ってMySQLの全`table create statement`を出力する方法
Qiita の記事に興味があったので。
MySQLに接続し、 show create table colors;
というコマンドを実行すると colors テーブルの create table
文が出力されます。
# USER=testuser / password=test9ass / DB=testdb で接続
$ mysql -u testuser -ptest9ass testdb -e "show create table colors \G"
Warning: Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
Table: colors
Create Table: CREATE TABLE `colors` (
`code` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`code`),
UNIQUE KEY `uq_colors_code` (`code`),
UNIQUE KEY `uq_colors_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
僕だったらどうやるかなと思ってシェルスクリプトを書いてみました。
$ mysql_exec() {
declare -r DBUSER=testuser
declare -r DBNAME=testdb
declare -r DBPASS=test9ass
mysql \
--silent \
--skip-column-names -u "${DBUSER}" -p"${DBPASS}" "${DBNAME}" "${@}" 2>/dev/null
}
$ mysql_exec -e 'show tables' | sed 's/.*/show create table \0 \\G/' | mysql_exec
元記事のように丁寧には書いていないですね(汗)
ちなみに
create table
を出力したいだけなら、以下の方法のが楽です。
$ mysqldump -u testuser -ptest9ass testdb -d
ディスカッション
コメント一覧
まだ、コメントがありません