他のチームの人からある作業依頼がありました。 あるテーブルにCSVファイルのデータ(1千万件以上)をインポートしてほしいという内容でした。 なぜ依頼をしてきたかというと、独自のツールを使用してインポートしたら、何回やっても途中でフリーズしてしまうとの事でした。 そこでこちらでツール等を使わずに普通にインポートしてみました。 そしたら途中でエラーでコケました。エラーコードは「SQL0668N」、理由コードは「3」でした。 「db2 ? sql コード」で調べてみたら以下のような内容でした。 理由コード3は、以前のLOAD処理が完了していない状態でありLOAD PENDINGになっている状態。 LOAD PENDINGを解除する為に、LOADをTERMINATEする必要がある。 つまり依頼者が行った作業が完全に終わっていない状態で、不正に作業を中断した上に さらに同作業をしようしたせいでエラー
データをデータベースにインポート/ロードする際には、コードページの指定は当然だと思っているが、コードページを指定していないスクリプトファイルに出くわしたことがきっかけで、ちょっと調べてみようと思った。 ちなみに、DB2 v9.5からLOADコマンドでXMLデータがロードできるようになってから、私はLOAD派。ロードするデータが正しければ、各種制約を考慮してロードの順番を気にするということが必要ないから。何より大量データをロードする際にIMPORTコマンドより高速だし。 環境 使用した環境をざっくりと。 Windows Vista Business SP1 DB2 Express-C v9.5.2 実験の概要 VARCHAR型およびXML型のデータをロードする UTF-8、Shift_JIS、EUC-JPのそれぞれで保存されたデータを用意する IMPORTおよびLOADコマンドでデータをロー
DB2で良く使用するコマンドを1ページにまとめたPDFファイル(いわゆるチートシート)を作りました。 以下からダウンロードして、ご利用ください。 (2009/12/27更新 – ver 1.5) このようなイメージで非常によく使うコマンドやそのオプション、用語を中心にまとめています。A4横で印刷するとちょうど良いと思います。良ければDB2を使う際に横に置いて使ってください。 最新版PDFファイルのダウンロードは以下から可能です。 DB2チートシート ダウンロード (PDFファイル) (リンクを「右クリック」→「対象をファイルに保存」で保存できます。) 何か間違いがありましたら、この記事のコメント欄、もしくは下記blogエントリのコメント欄で教えていただけると助かります。 http://db2.jugem.cc/?eid=2042 また、DB2のコマンドをやりたい事別に分類した「DB2逆引き
DB2のコマンドウィンドウからは、CALL文でストアドプロシージャが呼び出せます。 (例) > db2 call MYPROC(1) 戻値に複数のアンサーセットが含まれていてもちゃんと表示されます。また、OUT型の引数やINOUT型の引数を含むプロシージャを呼び出したい場合は、引数の部分に ? を入れる事で呼び出す事ができます。 (例) > db2 call MYPROC(2,?) コメント はじめましてだにえると申します 現在、あるプロジェクトにてDB2を使用し、 javaストアドプロシージャでバッチを作っています。 JAVAストアドはwindowsのバッチファイル(.bat)から起動しています。 JAVAストアド内で戻り値として成功の場合はブランク、 失敗の場合は1を戻しているのですが、バッチファイルでその値を どように拾っていいのか四苦八苦しております。 参考になる情報(ホームページ
DB2のSQL/PLでストアドプロシージャを作成した時によく問題になるのがログ出力です。 開発環境からデバッグしているうちは良いのですが、本番環境向けでもログをファイルに出力したい事はあります。 DB2のSQL/PLはログ用の機能を持っていませんので、別の言語(Javaとか)にするか、C言語などでユーザ定義関数を作っておいてそれを呼び出す必要がありました。 - Log DB2 UDB stored procedure messages (dW) この記事では、そのログ用の関数を提供してくれています。ログを出力するだけならちょっとしたファイル出力関数を一つ書くだけで良いのですが、この記事では本格的なロギングフレームワークを提供しています。 それだけに、初期導入の手間は少しかかりますが、本番業務に耐えるものになっているようです。 仕組みとしてはログ情報をDB内部の表にためて置いて、見たい時は専
何度も調べては忘れてしまうのでDB2でのSQLファイルの実行方法を、備忘録として記述しておきます。 対話モードに入らず下記をコマンドから実行する形になります。 db2 -f ファイル名(パス) このままだとステートメントのデリミタが設定されていないため、-tをつけます。 -vはエコー。 db2 -tvf ファイル名(パス) 忘れたら、対話モードに入り(コマンドプロンプトなどで db2 とだけタイプ) LIST COMMAND OPTIONS と入力すれば、オプションが表示される。 以下のサイトが参考になりました。 DB2で外部ファイルに書かれたSQLを実行させるには - 狂言日誌 Powered by ScribeFire.
[JAVA Developer特別企画]2003年10月号 知っておきたいデータベース移行術「Oracle→DB2編」 (3/7) JAVA Developer 2003年10月号より転載 ・(9)ストアド・プロシージャ PL/SQLでプロシージャを記述した経験がある開発者が一番取り組みやすく、かつパフォーマンスも良好といえるのが、「SQLプロシージャ」と呼ばれるものです。PL/SQLの記述法のように、簡単な制御文とSQL文からストアド・プロシージャを構成できます。ちなみにDB2では、C、C++、Javaなど多様な言語をサポートしています。 DB2のSQLプロシージャは、Cコンパイラを使用してコンパイルされます。Cコンパイラは、DB2製品自体には同梱されておらず、使用するプラットフォームにあわせて別途準備する必要があります。また、デフォルトと異なるCコンパイラを使用する場合には、レジストリ
前回は例外処理がよくわからんというところまででしたが、例外処理、一応入れてみました。これでたぶん大丈夫そう。大丈夫だと思う。おそらく。。うん。 hoge1 CREATE PROCEDURE hoge01 ( IN ic_DOC_ID VARCHAR(16) ,OUT oi_SQLCODE INT ,OUT oc_SQLSTATE CHAR(5) ,OUT ov_MESSAGE_TEXT VARCHAR(70) ) SPECIFIC hoge01 LANGUAGE SQL DETERMINISTIC NO EXTERNAL ACTION MODIFIES SQL DATA BEGIN /*--------------------------------------------------------*/ /* 変数の宣言 */ /*------------------------------
CSEとかでリモートマシンに入っているDB2インスタンスに接続する方法がわからなかったんで調べてみた。 接続される側 523と50000番のポートを開ける (523portはコントロールセンターが使う)Windowsの場合セキュリティーセンターから例外に設定する。 接続する側 DB2コントロールセンターを起動 「全てのデータベース」を右クリックして「追加」 サーバーのIPアドレスを入力して検索 追加したいDBを選択し追加 CSEからつなぐにはODBCを設定してあげる。 「設定」→「コントロールパネル」→「管理」→「データソース」 「追加」を押すとさっき追加したDBがあるので追加する。 CSEから立ち上げODBC接続を選んで接続。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く