データベースの創成は、実表へのデータ投入で完了します。データの投入は、格納先のデータベーススペースが作成され、実表やインデックスなどの論理構造定義、および格納構造定義が完了してから行います。
データベースの創成方法として、以下の2つがあります。
rdbsloaderコマンドおよびアプリケーションのINSERT文によるデータベースの創成の概要図を以下に示します。
rdbsloaderコマンドによってデータベースを創成する例を以下に示します。
Solaris/Linuxの場合
rdbsloader -mi -i 在庫管理DB.関東発注表DSI /home/rdb/kantou.data
Windowsの場合
rdbsloader -mi -i 在庫管理DB.関東発注表DSI C:\DEFAULT\USERS\KANTOU.DATA
ポイント
rdbsloaderコマンドは、分割格納が定義された表のDSIを処理するとき、入力ファイル内に分割値範囲外のデータが含まれている場合、該当データを処理対象とせずに処理を続行し、正常終了します。分割範囲外のデータをエラーとし、入力ファイルの作成ミスや指定ミスによるデータ抜けを検出するためには、Eオプションを使用します。
参照
rdbsloaderコマンドに関する詳細は、“コマンドリファレンス”および“RDB運用ガイド”を参照してください。
参考
rdbsloaderコマンドによるデータベースの創成にかかる処理時間は、以下のいずれかの条件を満たす場合、DSI割付け量に依存します。なお、条件に当てはまらない場合は、入力データ量に依存します。
対象DSIの定義直後
対象DSIがアクセス禁止状態
格納構造が、以下のいずれかの場合
RANDOM構造の表
RANDOM構造の表のDSIに付加されたBTREE構造のインデックス
OBJECT構造の表
OBJECT構造の表のDSIに付加されたBTREE構造のインデックス
INSERT文によってデータベースを創成するアプリケーションの例を以下に示します。
#include<stdio.h> main() { EXEC SQL BEGIN DECLARE SECTION; char SQLSTATE[6]; char SQLMSG[256]; short hcustomer; short hprodno; long hprice; short horderqty; EXEC SQL END DECLARE SECTION; char 処理番号; for(;;) { printf("データ挿入...1 \n"); printf("挿入終了 ...2 \n"); scanf("%c",&処理番号); switch( 処理番号) { case '1': printf("取引先の番号を入力してください.\n"); scanf("%d",&hcustomer); printf("取引製品の番号を入力してください.\n"); scanf("%d",&hprodno); : EXEC SQL INSERT INTO STOCKS.発注表(取引先,取引製品, 仕入価格,発注数量) VALUES(:hcustomer,:hprodno,:hprice,:horderqty); continue; case'2': break; } break; } EXEC SQL COMMIT WORK; : }
参照
INSERT文に関する詳細は、“SQLリファレンス”を参照してください。