
No.3ベストアンサー
- 回答日時:
繰り返し同じコマンドを実行する方法として、isqlの場合は、
go の後に数字をいれることで、コマンドを繰り返し実行できます.
例えば
insert table values ( 1 )
go 10
と指定すると、insert 文を10回繰り返し実行します。
また、set rowcount を使用すると、この後実行されるSQLの対象件数を指定することができます。
例えば
set rowcount 1000
Select * from Table
とすれば1000件が検索されます。
同じように
set rowcount 1000
Delete Table
とやれば100件、削除されるはずです。
ループを使用したい場合 While 文を使います.
前述のset rowcount とあわせて使うといいかもしれません。
set rowcount 1000
declare @count int
select @count = 0
while @count < 100
begin
delete Table [where条件]
select @count = @count + 1
end
削除の対象となる条件がしていされていないので、テーブル先頭の方から適当に1000件消えてしまいます.
実際に作業される際は条件を指定する必要があると思います.
また、Device がいっぱいになるとのことですが、トランザクションログ用のデバイスのことでいいですよね。
上記の方法では、いずれにせよトランザクションログはいっぱいになってしまうと思います.Dump tran 等で適宜対処する必要があるでしょう。
残したい行の条件が指定できるのであれば、 select into コマンドで
別テーブルに残したい行を移動し、元のテーブルを trancate table で削除、テーブルをリネームするのがいいと思います。select into や truncate table は大量にトランザクションログを出さないはずなので何度もコマンドを発行するよりいいと思います.
実際に処理を実行される場合は、必要なデータまで消さないように十分注意して行ってくださいね。
各コマンドの詳細はマニュアルを確認してください。
PDFのマニュアルのURLを参考URLに記入しておきます。
以上、がんばってください。
参考URL:http://www.sybase.co.jp/product/manuals/index.html
この回答への補足
YanYasさん、回答ありがとうございました。
早速使ってみようかと思いますが、2点ほど質問させてください。
while文を使用した際、1000件になるまでまわしていますが、一番初めにset rowcount 1000 を何故セットする必要があるのでしょうか?
トランザクションがいずれにせよいっぱいになる(!)とのことでしたので、Dump tran を行いたいと思います。
ちなみに checkpoint コマンドはトランザクションログのクリアになりますか?
初心者の質問ですみません。
が、たいへん助かってます!
No.2
- 回答日時:
#1です。
別の方法を書きます。必要なレコードをエクスポートし、表をdrop table で表削除した後、
新たに create table すれば、フラグメンテーションも解消されるので、良いかも!
そして、エクスポートファイルからインポートすると。
No.1
- 回答日時:
Sybaseですか。
。 使ったことはないですが、他社DBからの類推で話をします。100万件のレコードの削除ということですが、1つの表の全レコードを削除するのですか?
それとも、不要なレコードだけ削除するのですか?
前者の場合、Oracleでは表内の全レコードを削除するSQL文が存在します。
"truncate table"文です。このSQL文はレコード管理ブロック部のみ初期化するので、
delete文より遥かに高速です。トランザクション処理をスキップしますので。
Sybaseにも同様なSQL文があればよいのですが。。
-----------------------
「一気に削除するとDeviceがいっぱいとなる」とのことですが、おそらく、
トランザクション管理領域(Oracleでは「ロールバックセグメント」)がパンクするためでしょう。
DBのトランザクション設定を削除するときだけ、変更してみてはいかがですか?
Oracle、DB2、informixでもそうですが、トランザクション処理を変更することができます。
トランザクション処理を一切行わない、いわゆる「ダーティリード・モード」にすれば、
「一気に削除するとDeviceがいっぱいとなる」現象は発生しないと思います。
一気に削除できるでしょう。
一度、マニュアルを見てはいかかでしょうか?
もし、うまくいった場合、トランザクション設定を元に戻すことも忘れずに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- ドライブ・ストレージ iPhoneのストレージについて 4 2023/01/13 20:13
- UNIX・Linux yumやaptで依存関係で自動的にインストールされたパッケージ群を削除時にも自動で削除する事は可能か 1 2022/08/23 17:21
- Android(アンドロイド) 【google One】グーグルワンの無料の15GBの容量が不足しています。スマホ内 7 2023/02/05 06:30
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Google+ ブランド品偽物サイトからのメールを拒否する方法 批判覚悟で投稿します。 とあるサイトからブランド品を 2 2023/01/11 21:49
- Windows 10 削除できないフォルダ【ファルダの中身のファイルも】にするには 3 2022/12/28 09:21
- Google 翻訳 アプリ表示用のアイコンが削除できません 1 2022/07/03 23:51
- その他(メールソフト・メールサービス) ocn メールを、機種変の新しいiPhoneに設定しました。 下のURLにあるプロファイル一括設定で 1 2023/07/04 01:29
- LINE LINEのトーク内容一部を自分も相手も削除する方法 3 2022/10/21 03:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リサイクルビンのテーブル削除方法
-
アクセスのクエリでレコード削...
-
すべてのテーブル削除
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
男性と2人で飲食店に行きテーブ...
-
PUTTYテーブルでエラーが...
-
オーダーの覚え方について
-
今度同じサークルだった女の子...
-
アクセス レコードセットを更...
-
下記、問題に対しての解答が以...
-
一つ前に戻るには…
-
会員が作成したデータを格納す...
-
ACCESS2010 SQL 結合キーにつ...
-
単純なselectが遅くなるのです...
-
複雑なSQL文について
-
マテリアライズドビューとスナ...
-
ODBC接続で新しいレコードを追...
-
Oracleで上書きImportはできま...
-
Access SQL パラメータクエリ(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel テーブル内の空白行の削除
-
アクセスのクエリでレコード削...
-
ACCESSのマクロでテーブルのデ...
-
条件付DELEATE文について
-
トリガって、自分自身のテーブ...
-
Access2000の削除クエリで消し...
-
HiRDBのPURGEとDROPの違い
-
リレーションについて
-
CSVファイルから一括して削除す...
-
クエリで・・・
-
削除フラグってどうなんでしょう?
-
アクセス2010について
-
access2010 モジュールで exc...
-
ワークテーブルなのに自動で削...
-
mysqlで間接クエリー実行させた...
-
SQL削除条件について
-
列のDEFAULT設定を削除するコマ...
-
コマンドボタンで更新したい
-
物理削除と論理削除、どっちが...
-
Access2003 VBAのDELETEについて
おすすめ情報