• ベストアンサー

あるデータベースの表を全部消すDOSコマンド

まったく同じテーブル構造のデータベースを2つ用意してまして、 A:WEB画面表示用 B:更新用 とし、更新作業はBに対して行い、更新が一通りすんでから、Bの内容をAにコピーする、というやり方をしています。 そのコピーをするとき、 1.Bをエクスポートする 2.Aの表をすべて消す 3.BをAにインポートする というやり方をとっており、1と3はDOSのコマンドラインで行うことができるんですが、2はDOSコマンドでできないものでしょうか? この1~3の作業をまとめて行えるバッチファイルを作りたいのです。 それが無理なら、ほかにたとえばJSPなどの言語で1~3をまとめてWEB上でボタンをクリックすれば一気にやってくれるものを作ろうと思っております。 やり方をご存知の方がいましたら教えていただけないでしょうか。

  • Oracle
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
回答No.4

答えは既にでているので纏めますと・・ DOSコマンドで、とあるので#3の > sqlplus -L user/pass @deleteA.sql 事前に deleteA.sql などのSQLを書いたファイルを用意する。 > A:WEB画面表示用 > B:更新用 > 更新作業はBに対して行い、更新が一通りすんでから、Bの内容をAにコピーする、というやり方をしています。 #1さんの truncate table tableA; insert into tableA select * from tableB; テーブルを削除するのには、 truncate, drop, delete がありますが truncate が早く処理できたと思います。 delete は行数が増えると処理時間が掛かるはすですが 行数が少ないと どのコマンドを使っても大差はなかった記憶があります( 少なくとも万単位の行数 )。

その他の回答 (4)

回答No.5

全件削除するのであれば、truncateを使用して下さい。 deleteだとエクステントを開放しないため、HWMが下がりません。 また、データの件数が多ければインデックスにも注意が必要ですね。 1.drop index 2.truncate table A 3.insert into A select * from B 4.create index 5.dbms_stats.gather_table_stats(A) とこんな感じになるのでは。 構文は適度にはしょってますので、マニュアルを参照してください。 以上。

msndance
質問者

お礼

5回答にまとめてお礼を言わせていただきます。 AとBはテーブルではなく、同じE-R図というか、テーブル構成をもったデータベースですので、insert into A select * from Bというのは使えなかったと思います。 つまり、AとBは複数のテーブルをもったデータベースなわけで、すべてのテーブルをまとめてBからAにうつすということなのです。 ですので、2のかわりにsqlplusで消すというのをバッチファイルの中に入れればよさそうです。ありがとうございました。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

Aの表を全て消すSQLを書いたファイル(仮にdeleteA.sqlとします)を作っておいて、 sqlplus -L user/pass @deleteA.sql とすればよいのではないでしょうか。

回答No.2

一般的には限りなく「空」に近いものを作っておき、それで上書きするのがもっとも効率的です。 # まあ常識ですよね。(^^;;

  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

truncate table tableA; insert into tableA select * from tableB; 上記2文をwebでoo4o経由で実行するだけでいいと思いますが? わざわざエクスポートする意味は何かあるのでしょうか?

関連するQ&A

  • DOSコマンドについて

    教えてください。 DOSコマンドでコピーするバッチファイルを作っています。 主な目的はモバイルと自宅PCとのファイルのやりとりです。 copy C:\"Documents and Settings\(略)\*.*" d:\bp\mail みたいな感じでコピーしています。 フォルダ内にファイルがたくさんあると、時間が掛かってしまいます。更新されているものだけを上書きするようにはできないものでしょうか。

  • DOSプロンプトでコマンドが動作しない

    batファイルを作るためにとりあえずwindows端末のDOSプロンプト を立ち上げ、コマンドをたたいてみようとしています 端末はwindows7なのですが、DOSプロンプトに対して openコマンドをたたいたら 'open'は内部コマンドまたは外部コマンド、操作可能なプログラム またはバッチファイルとして認識されていません とのメッセージがでます Webで調べるとパスが通ってない?とのことのようですが このopenコマンドがwindows7のどこにあるか あるいはそれがわかった時、どこにどのように記載したらいいか 等、記載のサイトとか方法について教えていただけないでしようか よろしくお願いします。

  • UnzipするDosコマンド

    Ftpサーバーに置いてあるZipファイル(毎週更新される)を解凍し 解凍されたファイルをローカルにコピーするようなバッチを 作りたいのですが、Zipファイルを解凍する段階でつまづいています。。 Zipを解凍するコマンドというのはあるのでしょうか? バッチファイルというものに初めて取り組み わからないことだらけなのですが、よろしくお願いします。

  • DOSコマンドでのDIRコピー

    DOSコマンドでdirの階層構造を保持したままあるdirの下階層全てをあるdirの下へコピーするにはどのようにすればいいのでしょうか? 例えば、dir-aの下にdir-b1、dir-b2が存在している場合dir-aを全てdir-c の下へコピーしたいということです。(できれば1コマンドで)

  • DOSコマンドのダブルクォーテーションの扱い

    DOSコマンドでダブルクォーテーションを検索し、 リダイレクションをすることが出来なくて困っています。 例えば findstr "\"!" a.txt は出来ますが findstr "\"!" a.txt >b.txt とするとリダイレクションが出来ません。 grepも同じようです。 またunixコマンドではシングルクオートは、「囲まれた中身をそのままの文字として利用」し、ダブルクオートは、「囲まれた中身に$HOME など $ で始まる文字列があれば、 それを環境変数、シェル変数といった、値に置き換えてから、利用する」という明確な違いがありますが、DOSコマンドでは明確な違いはあるのでしょうか? unixのshellをDOSコマンドに移植しています。 DOSコマンドの参考Webもあまり見つからなくて困っています。 もし参考になりそうなWeb等ありましたら教えてください。

  • DOSコマンド(COPYコマンド)について

    DOS上でのCOPYコマンドについて確認します。 EXCELのファイルで、毎回ファイル名が変わるため、COPYコマンドで固定のファイル名にしようと思い、バッチ起動で、COPY \AAA\*.XLS \AAA\BBB.XLSで実行すると、コピー元と違うファイルサイズのBBB.XLSが作成されます。 中身を参照すると、文字化けしたものが 1レコードだけ作成されています。どうしてなのでしょうか? ※コピー元の*.XLSは、毎回 1ファイルのみです。

  • DOSコマンドでアドバイスをお願いします

    よろしくお願いします。 Windows2003サーバのDOSコマンドで サーバのメンテナンス機能の開発を検討しています。 下記のロジックについて、お手数ですが、 サンプルなど頂けると助かります。 サーバ上に散在するログファイルを、 そのサーバ上の一か所のディレクトリに 集めたい、というのが要望です。 test.lstというリストファイルがあり、 そこにはサーバ上のログファイルなどが記載されています。 C:\temp\test.log C:\program files\data\data.log C:\data\execute.log ・・・ これらのファイル名をループで読み込みながら、コピーし、 「C:\Backup」にそのコピーを集めていきたいと思います。 DOSコマンドによるバッチでこれは実現可能でしょうか?。 よろしくお願いします。

  • DOSコマンド(バッチファイル)の記述方法について

    Webサイトで、掲示板のログを定期的にFTPダウンロードして管理する運用を考えています。 DOSのFTPコマンドでダウンロードして、タスクで定時実行する所まで、できたのですが、いつも決まった場所にダウンロードするため、データが毎回上書きされてしまいます。 それで、FTPダウンロードの直前に、DOSコマンド(バッチファイル)で別フォルダを作ってデータを退避させるようにしたいのです。 もしできれば『2006_02_20_16_00』など、バッチファイル実行時の日時(年月日、時刻まで)が分かるようなフォルダ名にしたいです。 そんな事できるのでしょうか? DOSコマンドに詳しくないので、分かる方教えてください。 ダウンロードするフォルダは、『c:\Backup\』だとして、書き方の例を教えてください。 よろしくお願いします。

  • 異なるデータベースからのコピーを教えてください

    異なるデータベースからのコピーを教えてください。 VBSにて下記のような作業を行いたいと思います。 例) A  データベース A1 テーブル --------------------------------- B  データベース B1 テーブル --------------------------------- 上記のようにAデータベースのA1テーブルから、BデータベースのB1のテーブルへ データをコピーする方法を教えてください。 参考となるキーワード等があれば教えてください。 

  • DOSコマンドでの日付選択ファイル削除

    DOSのファイル削除コマンド(DELあるいはERASE)にファイル更新日付による選択オプションを与えるようなことはできないのでしょうか。 一定期間以上前のLogファイルや一時保存ファイル等を定期的に自動削除していくタスクスケジュールを組みたいのです。具体的には、特定フォルダ内の、例えば1ヶ月以上前に更新されたファイルのみ指定して削除するDOSコマンドオプションがあれば、これを使ったバッチプログラムファイルを作り、それをタスクスケジューラで定期的に実行する形式にしたいと考えています。 もしDOSコマンドによる方法が不可能な場合、他に簡単でいい方法があったらご教示いただければ助かります。