- - PR -
DB2のログファイル
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-25 20:21
テーブルに項目を追加するため、
データ移行をしたいのですが、DB2のコマンド行プロセッサーより 現在のテーブルを別のテーブル名でEXPORT→IMPORTして、 CREATE文より新しいテーブルを作成して、そこにINSERT文をしてみたのですが、 ログがいっぱいになるため処理が中断されてしまいます。 データ数は10万件くらいです。 DBの構成はログ・ファイル・サイズ = 292、1次ログ・ファイル数 = 12、 2次ログ・ファイル数 = 50です。 INSERT文にコミットを入れることはできるのでしょうか? ALTER TABLEコマンドを使用していますが、 INSERT文のログのエラーの原因を解明したいので。。 |
|
投稿日時: 2004-11-26 12:47
こんにちは。 ishiです。 SQLはトランザクションの最小単位だと思いますので、 単一のinsert文の途中にコミットを入れることは出来ないと思います。 ログがいっぱいになるということですが、エラーコードはSQL0964Cで間違いないでしょうか? (質問をされる場合にはエラーコードも明記したほうが良いと思いますよ。) テーブルに項目を追加したいのであれば 「ALTER TABLE」で出来ますが、 EXPORT⇒IMPORTを実施されているということは恐らく、項目の追加場所を末尾ではなく、任意の位置にしたいということだと思います。 未記入さんがやりたいことは次のような手順で出来ませんか? 1.create table tmpTable ・・・ 2.export to aaa.csv of del select firstColumn,'new column default value',secondColumn,・・・,lastColumn from orgTable 3.import to aaa.csv of del commitcount 1000 insert into tmpTable 4.drop table orgTable 5.rename table tmpTable to orgTable 2.のEXPORT時に出力されるcsvファイルは新しいテーブルの並びで出力しています。 3.のIMPORTではcommitcountを指定することでログフルを回避しています。 ※orgTableを早めにdropしてしまえば最後のrenameコマンドは要らなくなりますが、 これは途中で処理が失敗したときのための保険です。 実際に実行されるときには万が一に備えて事前にバックアップを取得しておくなど、もっと保険をかけておいたほうが良いかも知れません。 |
1