- - PR -
SQLserverで既存のdatabaseからcreate table文を抽出したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-29 19:06
どもです。がるです。
ちとSQLserverで分からないことがあるので質問です。 とあるSQLserver(SQLserver2000)がありまして。ちとその中身を 解析しなければいけないのですが。 なにぶん、大量のテーブルがあって少々難航しております。 で、諸所の事情から「Linux経由でのアクセスのみ」という状況下なので、 どうしても全てを「SQL文で」解決する必要がある、ってのがまた 頭痛のネタのなっております ;; # 最悪は直接Windowsマシンを触れなくもないのですが、可能な限り # SQLで行いたい状況になってます SQLserverで、以下のようなイメージのことは出来るのでしょうか? もし可能であれば、方法か、或いは方法が分かる情報へのポインタを 教えていただければとてもありがたいです。 1.テーブル名の取り出し あるdatabaseに属している、全てのテーブル名を一覧できるようなSQL文 はありますでしょうか? イメージとしては、例えば SELECT テーブル名 FROM database.マスターテーブル; みたいなイメージを考えております。 2.create table 文の取り出し これをSQLでやるのは無茶かなぁ…と思っているのですが。 テーブル名を指定すると、そのテーブルのcreate table文が文字列で 帰ってくる、みたいなことは可能でしょうか? 多分、ほかに方法がなければ「GUI画面から人力でメモる」のが確実 だとは思うのですが。 もし可能なら「プログラムで処理できるとなぁ」とか考えておりまして。 SQLserverにお詳しい方のお知恵をお借りできれば幸いです。 | ||||||||
|
投稿日時: 2004-07-29 19:36
こんばんわ。
とりあえず1番のみですが・・・。 SELECT name FROM [データベース名]..sysobjects WHERE type = 'U' でテーブル名の一覧は取得できるはずです。 2番はsyscolumnsテーブルとかsysindexテーブルなどを一緒に使えば出来そうな気がします・・・。 | ||||||||
|
投稿日時: 2004-07-29 19:39
がるがるさん、こんばんは。
「SQL Server Books Online」がお手元にあれば、「システムテーブル」について調べてみて下さい。
システムテーブルからデータベースオブジェクトの情報が取得出来れば、それを元に CREATE 文を生成する、という事もできると思いますが、SQL Server 付属の管理ツール「SQL Server Enterprise Manager」を使えば、複数テーブルの生成スクリプトを一括で吐き出せたりします。 | ||||||||
|
投稿日時: 2004-07-29 19:47
1.テーブル名の取り出し
そのdatabaseに接続した状態で select id,name from sysobjects where type = 'U' 2.create table 文の取り出し 列名と属性をひっぱってくるくらいなら、syscolumnsとsystypesから。 syscolumnsのidを1.で取得したidで絞り、colidでソート。systypesとのJOINはusertypeで。 ひっぱるのはsyscolumnsのcolid,name,prec,scale,length、systypesのnameくらい? | ||||||||
|
投稿日時: 2004-07-30 15:03
どもです。がるです。
みなさま、どうもありがとうございました。大体やり方が見えて きました。 多分近々実際にSQL叩いたりするので、また成果など出てきたら Upしたいと思います。 それでは、取り急ぎ御礼まで。 | ||||||||
|
投稿日時: 2006-11-02 11:06
ストアドプロシージャ
|
1