• ベストアンサー

SQL

テーブルの列の定義をvarchar(250)⇒varchar(500)に変更するのはALTERで変更してやればいいと思うんですが例えば1つのテーブルで上記のような列定義変更を膨大な数行う必要がある場合効率のよい方法ないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taspon
  • ベストアンサー率69% (9/13)
回答No.3

1)多数の表の特定の列名を対象にALTER文をつくる select 'ALTER TABLE '|| table_name ||' MODIFY '|| column_name || ' VARCHAR2(500);' from user_tab_columns where column_name='BIKOU'; 2)特定の表の多数の列を対象にALTER文をつくる select 'ALTER TABLE '|| table_name ||' MODIFY '|| column_name || ' VARCHAR2(500);' from user_tab_columns where table_name='TB01' and data_length=250; 質問の内容からすると2)でしょうか。

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> 上記のような列定義変更を膨大な数行う必要がある場合効率のよい方法ないでしょうか? 「膨大」が何行なのか不明ですが、「一行一行を手打ちするのはイヤだ」と解釈します。 列名・列幅のみが変化するのであれば、EXCELの式を用いてAlter文を生成して、 テキストファイルに貼り付けてスクリプトファイルにして実行するのはいかが?

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

> 1つのテーブルで上記のような列定義変更を膨大な数行う 元々の表定義がそもそも全面的に失敗だったということですよね。 正しい定義で新たに空っぽの表を作って旧表から新表に全行をコピーした方が効率は良いでしょう。 旧表がすでに他の表やプログラムと多数関連づけられているようですとケースバイケースだと思います。

関連するQ&A