C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Oracleの新規列の任意指定位置のいい方法


(過去ログ 34 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■17359 / inTopicNo.1)  Oracleの新規列の任意指定位置のいい方法
  
□投稿者/ やじゅ (315回)-(2008/04/22(Tue) 22:50:40)

分類:[データベース全般] 

Oracleでは、データが入っていた場合に、SQLServerと違い新規列を
任意な位置へ簡単に追加できません。

もちろんDBなんだから、項目の順番は関係ないのだから最後尾で
かまわないのではという意見もあるかと思いますが、
任意な位置へ項目を追加したいのです。

Oracleを使っている方々は多いと思いますが、どのような方法で
行っているのでしょうか?

いい方法やツールなどがあればご教示ください。

引用返信 編集キー/
■17360 / inTopicNo.2)  Re[1]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ ネタ好き (139回)-(2008/04/22(Tue) 23:21:03)
No17359 (やじゅ さん) に返信
> Oracleでは、データが入っていた場合に、SQLServerと違い新規列を
> 任意な位置へ簡単に追加できません。
>
> もちろんDBなんだから、項目の順番は関係ないのだから最後尾で
> かまわないのではという意見もあるかと思いますが、
> 任意な位置へ項目を追加したいのです。
>
> Oracleを使っている方々は多いと思いますが、どのような方法で
> 行っているのでしょうか?
>
> いい方法やツールなどがあればご教示ください。
>

希望するテーブルを別の名前で作成し、SQLなどを駆使してデータをインポートし、
その後旧テーブルを削除し、新テーブルの名前を元の名前に変えたら如何でしょうか?
Oracleはあまり使ったことありませんが、この方法ならば全てのRDBMSで可能なはずです。
引用返信 編集キー/
■17361 / inTopicNo.3)  Re[1]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ れい (503回)-(2008/04/22(Tue) 23:31:43)
No17359 (やじゅ さん) に返信
> Oracleでは、データが入っていた場合に、SQLServerと違い新規列を
> 任意な位置へ簡単に追加できません。

SQLServerも任意の位置へ簡単に追加なんてできないのでは?

> もちろんDBなんだから、項目の順番は関係ないのだから最後尾で
> かまわないのではという意見もあるかと思いますが、
> 任意な位置へ項目を追加したいのです。

項目の順番が関係ないというか…
タプルには順番の概念がもともとないのです。
順番を決めたければ自分で定義すればいいのです。

適当な数字をいれてそれの大小を
順番とすればいいのではないですか?

それなら任意の位置にいれられますよ。
引用返信 編集キー/
■17362 / inTopicNo.4)  Re[1]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ れい (504回)-(2008/04/22(Tue) 23:34:33)
No17359 (やじゅ さん) に返信
> Oracleでは、データが入っていた場合に、SQLServerと違い新規列を
> 任意な位置へ簡単に追加できません。

ぎゃ!
「列」ですね?!

ろくに読んでませんでした。
失礼しました。
引用返信 編集キー/
■17363 / inTopicNo.5)  Re[1]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ はつね (620回)-(2008/04/23(Wed) 00:29:18)
2008/04/23(Wed) 00:30:36 編集(投稿者)

No17359 (やじゅ さん) に返信
> もちろんDBなんだから、項目の順番は関係ないのだから最後尾で
> かまわないのではという意見もあるかと思いますが、
> 任意な位置へ項目を追加したいのです。

(1) 別テーブルを作成してINSERT(CREATE TABLE 〜 INSERT 〜でも可)
(2) テーブルをDropして新しい列を入れてCREATE
(3) (1)で作成した別テーブルからINSERT
(4) 別テーブルをDrop

簡単なのは、Object Browserとか使って上記の(1)〜(4)を自動実行しちゃう方法かな。

# つまりオンラインメンテはできないということですね。
# 11gのEnterprise Manager Consoleでも無理でした。


引用返信 編集キー/
■17365 / inTopicNo.6)  Re[2]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ やじゅ (316回)-(2008/04/23(Wed) 01:52:30)
やじゅ さんの Web サイト
現状では、私はデータ量によってACCESSを使っています。

1.ACCESSにてOracleをODBCで繋いで、指定のテーブルをデータリンクして、新規のテーブルを作成でデータ保存
2.Oracle側の指定のテーブルを削除
3.Oracle側の指定のテーブルに新規列を作成して、テーブルを作成
4.ACCESSにてOracleをODBCで繋いで、指定のテーブルをデータリンク
5.新規のテーブルにて新規列を追加
6.新規のテーブルからデータリンク先へデータ保存


> 簡単なのは、Object Browserとか使って上記の(1)〜(4)を自動実行しちゃう方法かな。
>
そうですよね。

他の方ってどのようにしてるのでしょう、それごとにSQLを書いてるんでしょうか?
引用返信 編集キー/
■17366 / inTopicNo.7)  Re[3]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ 片桐 (87回)-(2008/04/23(Wed) 02:25:05)
片桐 さんの Web サイト
はつねさんと同じ考え方でやってましたですね。
旧テーブルリネーム→新規テーブル作成→データINSERT→旧テーブルDrop
引用返信 編集キー/
■17369 / inTopicNo.8)  Re[4]: Oracleの新規列の任意指定位置のいい方法
□投稿者/ ネタ好き (140回)-(2008/04/23(Wed) 02:44:09)
私は複雑な場合にSQL文で慎重に移行する事にしております。
例えば、外部参照、IDのオートインクリメントが絡んだ時はSQL文にしています。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -