タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

DB2/400

【DB2/400】SYSIBM.SYSDUMMY1テーブルの使い方

以前、スクラッチ開発のシステム内で、下記のようなコードを書いていました。 db.connect(); db.setSQL("SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1"); ResultSet rs = db.executeSelect(); //: //: ん? 「SYSIBM.SYSDUMMY1」とは何だろう? www.teki…

「A5:SQL Mk-2」に感謝!

もう、何年も愛用させていただいている「A5:SQL Mk-2」。 a5m2.mmatsubara.com 用途は、ほとんどが「SQL→EXCEL発行」なのですが、データ集計やアプリケーションのテスト時などで、「これでもか!」というほど使い倒しております。 1日1回は、使っています…

【AS400】物理ファイル(PF)のDFT(デフォルト)キーワード

今更ではありますが、AS400の物理ファイルのフィールドの定義で設定できる「デフォルト値」について検証してみました。 まずはテスト用として、下記のようなテーブルを準備。 SECTIONS.pf A UNIQUE A R RECSEC TEXT(' 部門マスタ ') A* (FIELDS) A ACTIVE_FL…

【DB2 for i】「A5:SQL Mk-2」のSQLパラメータで数値を使いたい

久しぶりに、DB2 for i ネタになります。 A5:SQL Mk-2とは? 最高のSQLクライアントツールに、「A5:SQL Mk-2」というものがございます。 a5m2.mmatsubara.com ODBCドライバーを経由して、DB2 for iの操作も可能! ホント、軽量でして、毎日愛用させていただ…

【SQL】UNION ALLした統合結果をさらにグループ化する

業務の中で、下記のような集計処理を行う機会があり、 少しハマってしまったので、公開しておきます。 ちなみにRDBは、DB2 for IBM i (V7R3M0) になります。 やりたいことは、テーブルAを集計した結果とテーブルBを集計した結果を統合したものを さらにグル…

【SQL】UPDATE命令で項目をまとめて更新する

久しぶりにSQLネタです。 SQLは「基本的なことができればOK!」と思っています。 その理由は、SQLを極めれば何でもできてしまうので、気を抜くと確実に「スパゲティSQL」を増殖してしまう恐れがあるから。 しかしながら、時々「こんなことができないかなぁ~…

【AS400】スキーマ変更した後、Viewはどうなるか?

概要 前回の続きです。 tigertaizo.hatenablog.com テーマは「スキーマ変更した後、Viewはどうなるか?」です。 DB2 for iでの動作確認 前回同様、実際に「手を動かして試す」ことにしました。 検証用テーブルの準備 今回は「果物テーブル」を作ってみました…

【AS400】ビューの検証

概要 ビューとは? DB2 for iでの動作確認 事前準備 ビューの作成 ビューの調査 ビューを使用する ビューSQLの確認 ビューの書き込みテスト DSPDBRコマンドで確認 WRKOBJコマンドで確認 マテリアライズドビュー まとめ 概要 今回、RDBのビューを検証すること…

JDBC と Mybatis でバッチ処理

大量のSQLを発行して、レコードを追加したり、更新したりするケースは多くの場面で遭遇すると思います。 JDBC と Mybatis、それぞれのバッチ処理のサンプルを書いてみました。 JDBCでの実装 RDBはAS400で、jt400を使ってアクセスします。 compile 'net.sf.jt…

【AS400】物理ファイル「削除済みレコードの再使用」の検証

AS400のデータベース、すなわち「DB2 for i」についてです。 AS400のテーブルのレコードを物理削除していくと、削除レコードがどんどん増えていくことになりますが、その場合、バッチ処理等で「RGZPFM(物理ファイル・メンバー再編成)」をすれば、削除レコ…

【Java】機密情報を環境変数で取り扱う

GitHubにPrivate格納ができるようになってきたとはいえ、プラットフォームのリポジトリに機密情報を預けるのが、どうも苦手でした。 苦手というより、もし万が一漏洩してしまったら、「超大変」でかつ「超危険」ということです。 ハッシュ関数でハッシュ化し…

【Mybatis】DBアクセス速度改善(DBセッション制御)

Mybatisを実装したJavaのコンソールアプリ開発を行っています。 RDBは、DB2 for i(旧AS400)。 CSVやEXCELファイルの大量のデータを裁かなければならないケースも多く、その場合、処理時間が長くなってしまいがちです。 これまでのやり方は、ACSのデータ転…

文字化け対策(Java AP Server → AS400)

AS400内のアプリは、5250エミュレータで接続することで操作可能になりますが、AS400の外にApplication Server(Web, Java)を立て、AS400(DB2 for i)をDB Serverで運用する場合、JDBCドライバーを使って、Web・DB間のやり取りを行うようになります。 この…

【AS400】テンポラル・テーブル検証

AS400、つまりは「DB2 for i」の新機能であります「テンポラル・テーブル」を試してみたので、まとめておきます。 当機能は、V7R03から利用可能とのこと。 テンポラル・テーブルとは? そもそも、テンポラル・テーブルとは何か? ベルさんのサイトに詳しく書…

【AS400】レコードロック検証

改めて、DB2 for iでのレコードロックを検証していきたいと思います。 (1) レコードロックとは? (2) RPGプログラムでレコードロックを発生させてみる 検証1用ソースPGM RPGLESRC/SAMPLE39 検証1 実行結果 レコードロックの確認方法 ロックウェイト時のWRKAC…

【AS400】SQLRPGLE-挿入、更新、削除件数を取得する

久しぶりにAS400のSQLRPGLEネタです。 SQLのINSERT文、UPDATE文、DELETE文実行後に、どうやって結果レコード数を取得するのか? という疑問が湧きました。 Javaであれば、下記のようにSQL実行結果の戻り値で結果レコード件数を取得できるのですが・・・。 in…

はじめてのMybatis(with AS400)

概要 実行環境 はまったこと (1) ライブラリーリストが機能しない (2) resultMapのcolumn値でピリオド付きフィールドが使えない (3) 最初のN行のみの選択したい場合にN値をパラメータで渡せない (4) CHARフィールドのトリムがされない 概要 O/Rマッパーで…

【AS400】コネクションプールの確認

GlassfishなどのAP Serverでコネクションプールの登録した場合、AS400ではどうなっているかの話です。 P-COMMでは、ネットワークの状況の照会にて、確認可能です。 ネットワークの状況の確認 WRKTCPSTSコマンド、またはNETSTATコマンドを実行します。 WRKTCP…

【DB2/400】登録済みストアド・プロシージャの確認

ちょうど、DB2 for i上に展開しているストアド・プロシージャを確認する必要があり、通常ならiナビで確認するのですが、P-COMMからサクっと調査する方法はないか検索していましたら、下記のサイトと廻り合えました! AS/400のとなりで-ストアードプロシージ…

【DB2/400】AutoNumber IDのテーブル作成

正直、ずっとDDSでのテーブルばかり扱ってきたので、DDLのテーブルについてはなじみがありません。 これではいかん!ということで、少しずつスキルアップを進めていこうと考えます。 まずは、AutoNumberの主キーから!!!(なぜか? 理由は特にありません)…

【DB2/400】DB側のシステム日付を取得する

「DB2/400」という呼び方が、古いものかもしれません。今なら、「DB2 for i」なのでしょう。 DB2 for iをAP Server等のリモートで操作する場合、DB側のシステム時間を使う必要があったので、サンプルを書いてみました。 参考にさせていただいたサイトは、こ…

【AS400】RPGLE-日付・時刻型フィールド

DB2/400の日付・時間系のデータ項目を調査しましたので、まとめておきたいと思います。 まず、DB2/400で定義できるデータタイプは、下記の通り。 今回、サンプルテーブルを準備し、RPG、Java(AS400内部ではなく、自分のローカルPCより実行)からその項目に…

【AS400】データベース名変更方法

AS400(V7R1)のローカルのRDBの名前の初期値は、Serverのシリアルナンバーになっていると思います。 その名称を変更する方法をまとめます。 データベース名の確認 次のコマンドで確認できます。 WRKRDBDIRE リレーショナル・データベース・ディレクトリー 項目の処理 位置指定 . …

【AS400】CHGPFコマンドにて、フィールドを変更する

前回では、AS400のテーブルに新しいフィールドを追加する方法を紹介しましたが、今度はすでに存在するフィールドを変更してみたいと思います。 再度、従業員マスタ(物理ファイル)のDDSを使って試します。 TIGER/DDSSRC EMPLOYEES A UNIQUE A R RECEMP TEXT…

【AS400】CHGPFコマンドにて、テーブルにフィールドを追加する

AS400のテーブルをDDSで管理している場合において、フィールドを追加する方法をまとめておきたいと思います。 DDSとは、従来の記述方法でデータ属性 (レコードおよびフィールドの名前や長さ) のデータ記述仕様を使用して、物理ファイルや論理ファイルを定義…

【AS400】ライブラリーの使用ディスク容量を調べる方法

使用目的 「あるライブラリーが、どのくらいディスク容量を使用しているか」を調査します。 確認方法 DSPLIBコマンド 調査したいライブラリー名を指定します。 DSPLIB LIB(TIGERDB) OUTPUT(*PRINT) スプール・ファイルの処理にて結果確認 スプール・ファイル…

【AS400】DDS-論理ファイルの作成

論理ファイルの特徴 論理ファイルは、参照する物理ファイルのINDEX情報等を記憶しています(そのキー情報をアクセスパスを呼びます)。 論理ファイルができる内容は、下記の通りです。 ①キーの変更 :物理ファイルの主キーを変更できる。(論理ファイルが保…

【AS400】DDS-物理ファイルのフィールド見出しを変更する

概要 システムが稼働した後になって、準備していた予備フィールドを正式に利用することになった場合など、最初のテーブル記述を編集したくなるケースがあると思います。 ここでは、フィールド名の見出し(カラム・ヘディング)を編集する方法を紹介します。…

【AS400】RGZPFM(物理ファイルメンバー再編成)

目的 削除済みレコード領域を除去します。 削除レコードのディスク領域が解放されることで、パフォーマンスが改善することもあるようです。 コマンド正式名称ReorGaniZe Primary File Member (reorganize・・・[動] 再編制する; 改組(改造,改革)する)※iでは…

【AS400】フィールド名のリネーム方法

概要 同一のテーブルをプログラムで使用する場合や、複数のテーブル内に、同一の変数名がある場合などで、ある共通のフィールド名がどのテーブルを参照しているかわからなくなってしまいます。 このような場合、片方のフィールド名をプログラム実行時のみ、…