- ベストアンサー
MySQLの現存するテーブルからcreate table文を起こす方法ありますか?
MySQLの現存するテーブルからcreate table文を起こす方法ありますか? ・お金が掛からない ・CUIベースでできる が条件です。 show full columns from テーブル名; でテーブルの情報を参照できるところまでは理解したのですが。。 showとかの特殊コマンドでなくて、管理情報のテーブル(かビュー、あるいはシノニム)に直接クエリー投げれるなら、スクリプト組めばなんとかなりそうなのですが。。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
mysqldump を --no-data オプション付きで実行ということではないのかな
その他の回答 (3)
- fortranxp
- ベストアンサー率26% (181/684)
>show で取り出した情報をファイルに書き出してそれ>を再読み込みしながら加工すればできなくは無い 何やら随分深い意味でお困りのようで御座います。 そのようにコダワルことは物事の本質に迫る優れた 才能有りですね。 私はそこまで知性に優れていないためかどうにもピン と来ないのですがきっと深い意味だと思います。 もうちょっと 何故そういう必要があるのか 平凡な私にお教え下さい。 スクリプトと言われていますがJAVAでもOKですか? とはいえ 答えが出る可能性は薄いです。
補足
買いかぶられているようですが、特別な事は全く考えていません。 テーブル、作成ソース、ドキュメントを包括的に管理したいだけです。 クリエイト文⇔TBL⇔ドキュメント オラクル、SQLサーバーといったDBでは普通に出来る事です。 別にそのような立派なツールまでは期待していないです。 無いなら無いでいいのですが、せめて手作りできる糸口ぐらいは無いと寂しいです。 スクリプトとは固有名称としてではなく一般用語としてのスクリプトです。 コマンドの集合体をファイルにまとめたものです。 シェルでも何でもいいのです。
- fortranxp
- ベストアンサー率26% (181/684)
例えば describe テーブル名 で テーブルのフィールド名と型(intやchar)長さの データを配列やCSVファイルに保存する。 次に そのデータを利用して create table table1 (item char(5) not null) を作成するのですね。 でも現存するのですから create table文は文法違反ではないのでしょうか? 少なくとも一度削除の要ありまたは delete後 insertのほうがよいと思います。
補足
レス感謝。 DESCRIBE は SHOW COLUMNS FROM の簡略形なので結局はshowコマンドでしか取り出せないという事ですか。 showコマンドで参照できるところまではマニュアルで理解したのです。 そうでなくてshowコマンドで取り出せるぐらいなので管理情報がどこかにテーブルかそれに順ずる形式で保存されているハズですよね。 それを直接クエリで参照する方法があるのか?無いのか? もしくは、そんな面倒なこと考えなくても、もっと便利な外部スクリプトが用意されているとか、 あるいは、MySQLでは一切そんな事はできないので、そういう事したいなら他のDBMSに乗り換えた方が良いとか、 そういう情報が欲しいです。 たしかにshow で取り出した情報をファイルに書き出してそれを再読み込みしながら加工すればできなくは無いでしょうが、linux内でスクリプト一つで完結させるにはかなり面倒な処理になりますよね。
- fortranxp
- ベストアンサー率26% (181/684)
>テーブルの情報を参照 describe テーブル名 それでinsert into テーブル名 values( ) が一般的と思うのですが ご趣旨が今一解りません。
補足
レス有難う御座います。 >ご趣旨が今一解りません。 create table tbl1 (itm1 varchar(1) not null); でテーブルを作成したとします。 コマンドで直接打ったか、 もしくは ????.sqlというテキストファイルにコードを書いてそこから作成したが、そのファイルを失念したとします。 物理的に存在する tbl1 から逆に create table tbl1 (itm1 varchar(1) not null);というコマンドを生成する方法を考えています。 例えば システムテーブルに「テーブル管理」というのと「カラム管理」があり、それぞれ項目が以下だったとします。 ※「インデックス管理」も必要ですが説明が複雑になるので割愛します <テーブル管理> ・テーブル名 ・容量情報 ・その他テーブルに関する情報 <カラム管理> ・テーブル名 ・SEQ ・項目名 ・属性 ・レングス ・Nullを許可する ・その他カラムに関する情報 これをselectで結合して呼び出しつつ編集しファイルに出力するスクリプト作れば簡単にcretate table文を生成できると思うのですが、そういうシステムテーブルが存在するのかどうか?という事です。 さらに言えば既にそういう事を実現したスクリプトが存在すればもっと楽なのですが。
お礼
ありがとう御座います。 非常に助かりました。