データベースのデータを外部ファイルに出力するには、以下の3通りの方法があります。
DSIのデータをそのまま外部ファイルに出力する
SQL文による検索結果を外部ファイルに出力する
XML検索式による検索結果を外部ファイルに出力する
rdbunlコマンドを使用して、データベースのデータを外部ファイルへ出力することができます。
参照
rdbunlコマンドの指定方法の詳細については、“Symfoware Server コマンドリファレンス”を参照してください。
すべてのデータを1つの外部ファイルに出力する場合の機能概要と指定例を以下に示します。
$ rdbunl -i 在庫管理DB.在庫表DSI /disk3/rdb/data/stockdsi1.data (1)
(1) 出力ファイル名
任意の列を選択し、この列で構成するデータを外部ファイルに出力する場合の機能概要と指定例を以下に示します。
$ rdbunl -i 在庫管理DB.在庫表DSI -c 倉庫番号,製品名 (1) /disk3/rdb/data/stockdsi2.data
(1) 列指定
データを任意のデータ件数ごとに分割して複数のファイルに出力する
任意のデータ件数ごとに分割して複数のファイルに出力する場合の機能概要と指定例を以下に示します。
$ rdbunl -i 在庫管理DB.在庫表DSI -v /disk3/rdb/data/part.data (1)
(1) 分割指定ファイル名
ある条件で絞り込んだデータのみを外部ファイルに出力する場合の機能概要と指定例を以下に示します。
$ rdbunl -i 在庫管理DB.在庫表DSI -f /disk3/rdb/data/term.data (1)
(1) 条件指定ファイル名
rdbunlコマンドが出力する外部ファイルのデータ形式には、以下の2種類があります。
バイナリ形式
テキスト形式
データ形式の詳細は、“4.1.1.1 外部ファイルの形式”を参照してください。
バイナリ形式でデータベースのデータを外部ファイルに出力した場合の例を以下に示します。
可変長文字列属性の列に対しては、データの有効長を示す2バイトの領域がデータの前に追加されて出力されます。データの有効長を示す領域には、データの有効長が2進数で格納されています。
列データの出力域は、oオプションの指定により異なります。
データの有効長を示す領域と、可変長属性の定義で指定した長さ(最大長)分の領域です。有効長が最大長未満の場合は、データの有効な部分以降の内容は不定です。
データの有効長を示す領域と、有効長分の領域です。
データの有効長を示す領域と最大長分の領域を出力した場合の、外部ファイルのデータ形式
目的に応じたアプリケーションを作成しなくてもrdbunlsqlコマンドを使用して、SQL文によるデータベースの検索結果を外部ファイルに出力することができます。また、検索結果を編集して外部ファイルに出力することもできます。
参照
rdbunlsqlコマンドの指定方法の詳細については、“Symfoware Server コマンドリファレンス”を参照してください。
SQL文をファイルに記述して検索結果を外部ファイルに出力する
SQL文をファイルに記述して、検索結果を外部ファイルに出力する場合の機能概要と指定例を以下に示します。
$ rdbunlsql -d 在庫管理DB -v /disk3/rdb/data/select.data /disk3/rdb/data/result.data (1) (2)
(1) SQL文記述ファイル名
(2) 出力ファイル名
SQL文をコマンドのオプションに指定して検索結果を外部ファイルに出力する
SQL文記述ファイルを作成しなくても、rdbunlsqlコマンドのsオプションにSQL文を指定して、検索結果を外部ファイルに出力することができます。以下に例を示します。
$ rdbunlsql -d 在庫管理DB -s "SELECT 製品名,在庫数量 FROM 在庫スキーマ.在庫表 WHERE 製品番号 < 350" (1) /disk3/rdb/data/result.data
(1)SQL文
SQL文記述ファイルまたはオプションには、以下のSQL構文が指定できます。
問合せ式 [ORDER BY句] [更新可能性句] [並列指定] [実行オプション指定]
SQL文記述ファイルに指定できるSQL文は1つだけです。
参照
指定方法の詳細については、“Symfoware Server SQLリファレンス”を参照してください。
rdbunlsqlコマンドが出力する外部ファイルのデータ形式には、以下の2種類があります。
バイナリ形式
テキスト形式
これらのデータ形式は、rdbunlコマンドが出力する外部ファイルのデータ形式と同じです。データ形式の概要は、“4.1.4.1 DSIのデータをそのまま外部ファイルに出力する”を参照してください。また、データ形式の詳細は、“4.1.1.1 外部ファイルの形式”を参照してください。
rdbunlxコマンドを実行することで、データベースに格納されたXMLデータからXML検索式に一致したデータを検索し、結果をファイルに出力します。
rdbunlxコマンドは、一度に複数のXML検索式を指定して、検索処理を実行することができます。
参照
rdbunlxコマンドの詳細については、“Symfoware Server コマンドリファレンス”を参照してください。
XML検索式の詳細については、“Symfoware Server XQueryリファレンス”を参照してください。
なお、検索対象のXMLデータは、格納構造がSEQUENTIAL構造の表のBLOB型列に格納してください。また、格納するXMLデータの文字コード系は、UTF-8にしてください。
注意
XMLデータをデータベースに格納する場合には、XMLの形式が正しいことを確認してください。XMLの形式が正しくない場合、検索対象外のデータとして扱われます。
正しいXMLの形式に関しては、“XMLデータの形式”を参照してください。
XML検索式をファイルに記述して検索結果を外部ファイルに出力する
XML検索式をファイルに記述して、検索結果を外部ファイルに出力する場合の機能概要と指定例を以下に示します。
ここでは、伝票DBの2007年1月のDSIに対して、以下の3つの検索条件に一致するデータを検索し、検索結果を出力定義ファイルに指定されたそれぞれの出力ファイルに出力します。
$ rdbunlx -i 伝票DB.DSI_2007_01 -c 伝票 -v /disk3/rdb/data/cfg/selquery.txt -o /disk3/rdb/data/cfg/seloutput.txt
(1) (2)
(1) 検索定義ファイル名
(2) 出力定義ファイル名
検索定義ファイルは、XMLデータを検索するための検索条件を記述したXML検索式を指定したファイルです。
上記の例では、検索定義ファイルは以下のような内容になっています。
1 /受注伝票[契約日/text() = "2007-01-01" and 受注先/コード/text() = "B001"]% 2 /受注伝票[受注先/社名/text() = "ABC銀行"]% 3 /受注伝票[受注先/社名/text() = "ABC銀行" and 商品/個数/text() > 100]%
出力定義ファイルは、検索定義ファイルで記述した検索式に対し、検索結果を出力するファイルを絶対パスで定義します。
上記の例では、出力定義ファイルは以下のような内容になっています。
1 /disk3/rdb/data/outdata/001kekka.xml 2 /disk3/rdb/data/outdata/002kekka.xml 3 /disk3/rdb/data/outdata/003kekka.xml
XML検索式に複数件のレコードが一致した場合の出力例は、以下のようになります。
/disk3/rdb/data/outdata/001kekka.xml
形式が正しくないXMLデータを外部ファイルに出力する
データベースに、形式が正しくないXMLデータが格納されている場合、検索対象外のデータとして取り扱われます。これらのデータは、rdbunlxコマンドにrオプションを指定することにより、エラーデータを含むレコードを外部ファイルに出力することができます。
注意
本機能は、整形式の条件に一致しているかの検証をするための機能ではありません。
rdbunlxコマンドによる検索処理で、形式が正しくないXMLデータを検出した場合に、エラーデータ出力ファイルにエラーデータを出力する場合の例を以下に示します。
rdbunlxコマンドのrオプションにエラーデータ出力ファイル名を指定します。
$ rdbunlx -i 伝票DB.DSI_2007_01 -c 伝票 -v /disk3/rdb/data/cfg/selquery.txt -o /disk3/rdb/data/cfg/seloutput.txt -r /disk3/rdb/data/outdata/err.xml qdg25046i:エラーデータ出力ファイル/disk3/rdb/data/outdata/err.xml'に2件のデータを抽出しました (システム名=DBAP) qdg25020i:検索番号1の出力ファイル'/disk3/rdb/data/outdata/001kekka.xml'に100件のデータを抽出しました(システム名=DBAP) qdg25020i:検索番号2の出力ファイル'/disk3/rdb/data/outdata/002kekka.xml'に120件のデータを抽出しました(システム名=DBAP) qdg25020i:検索番号3の出力ファイル'/disk3/rdb/data/outdata/003kekka.xml'に130件のデータを抽出しました(システム名=DBAP) qdg12074i:rdbunlxが正常終了しました 復帰コード 00 (システム名=DBAP)
備考.rオプション指定時は、出力件数が0件の場合でもqdg25046iのメッセージを出力します。
rdbunlxコマンド実行中に、正しくないXMLデータを検出した場合、エラーデータ出力ファイルには以下のようにデータが出力されます。
/disk3/rdb/data/outdata/err.xml
XMLデータを生成したプログラムを見直してください。
正しくないXMLデータを修復する場合、エラーデータ出力ファイルに出力された情報から対応する行を特定して、rdbexecsqlコマンドやアプリケーションなどでデータを修復してください。
注意
rdbunlxコマンドに指定したDSIに対して、他のアプリケーションなどからデータの追加、更新、削除のいずれも動作していない状態で実行してください。
データの追加、更新、削除のいずれかが動作中に、本コマンドを実行した場合には、エラー終了します。
rdbunlxコマンドでは、検索結果を出力するファイルとエラーデータ出力ファイルで、それぞれ出力範囲が異なります。
出力範囲 | |
---|---|
検索結果を出力するファイル | ルートと呼ばれる要素の終了タグまで出力 |
エラーデータ出力ファイル | レコード全体を出力 |
rdbunlxコマンドは、レコード内でエラーデータを検出した場合であっても、ルートと呼ばれる要素の終了タグまでが正しい形式であれば、ルートと呼ばれる要素の終了タグまでを検索対象とし、検索結果を出力します。この時rdbunlxコマンドのrオプションを指定した場合には、エラーデータ出力ファイルにも出力されます。
以下にその例を示します。
開始タグ数よりも終了タグ数の方が多い、誤ったXMLデータを格納した場合
上記のデータのように終了タグ“</受注伝票>”を記述した場合、ルートと呼ばれる要素の終了タグはデータの途中になります。rdbunlxコマンドは、ルートと呼ばれる要素の終了タグを見つけた地点で検索式に一致していた場合、検索結果を出力するファイルに出力します。
この場合、検索結果は以下のように出力されます。
[検索結果を出力するファイル]
このデータはエラーデータであるため、rdbunlxコマンドのrオプションを指定した場合、以下に示すようにエラーデータ出力ファイルにも、エラーデータとして出力されます。
[エラーデータ出力ファイル]
上記のように誤ったXMLデータをデータベースに格納した場合、検索結果を出力するファイルとエラーデータ出力ファイルの両方に結果が出力される場合があります。