Hitachi

Hitachi Advanced Data Binder コマンドリファレンス


14.2.1 指定形式およびオプションの説明

〈この項の構成〉

(1) 指定形式

adbexport
  -u 認可識別子
  〔-p パスワード〕
  〔-k {囲み文字|none}〕
  〔-s {区切り文字|tab}〕
  〔-g データエクスポート処理の経過メッセージの出力間隔〕
  〔-z エクスポートオプションファイル名〕
  {-q SQL記述ファイル名|-n 処理対象表〔 -c チャンクID〕}
  〔--compress GZIP〕
  〔--with-column-name〕
  出力データパスファイル名

(2) オプションの関係

adbexportコマンドでどのような情報を出力したいかによって,オプションの指定が異なります。データエクスポートの実行パターンごとのオプションの指定を次に示します。各オプションの詳細については,「(3) オプションの説明」の「-q」「-n」「-c」それぞれの説明を参照してください。

表14‒1 データエクスポートの実行パターンごとのオプションの指定

項番

データエクスポートの実行パターン

-qオプションの指定

-nオプションの指定

-cオプションの指定

1

表の全データをエクスポートしたい※1

×

×

2

特定期間にインポートしたデータ(特定のチャンクのデータ)だけをエクスポートしたい※2

×

3

SELECT文の検索結果をエクスポートしたい※1

×

×

(凡例)

○:オプションを指定します。

×:オプションを指定しません。

次に示す組み合わせでオプションを指定すると,adbexportコマンドがエラーとなります。

-qオプションと-nオプションを同時に指定した場合

-qオプションと-cオプションを同時に指定した場合

-cオプションを単独で指定した場合

注※1

待機状態のチャンクに含まれるデータはエクスポートされません。

注※2

マルチチャンク表に対してだけ,実行できます。

(3) オプションの説明

-u 認可識別子

〜〈文字列〉((1〜100バイト))

adbexportコマンドを実行するHADBユーザの認可識別子を指定します。

このオプションには,次に示す権限を持つHADBユーザの認可識別子を指定してください。

  • ディクショナリ表またはシステム表をエクスポートする場合

    CONNECT権限を持つHADBユーザの認可識別子を指定してください。

  • HADBユーザが定義した実表またはビュー表をエクスポートする場合

    CONNECT権限,およびエクスポート対象表に対するEXPORT TABLE権限を持つHADBユーザの認可識別子を指定してください。

このオプションに指定する認可識別子は,1~100バイトの範囲で指定してください。ただし,認可識別子を囲む二重引用符は,1~100バイトには含みません。

重要

認可識別子の文字列中に英小文字または\がある場合は,認可識別子の指定規則を必ず確認してください。認可識別子の指定規則については,「1.4.2 認可識別子およびパスワードの指定規則」を参照してください。

-p パスワード

〜〈文字列〉((1〜255バイト))

-uオプションに指定した認可識別子のパスワードを指定します。

重要

パスワードの文字列中に,二重引用符(")やストローク(|)など,OSやシェルが別の意味で使用している文字がある場合は,パスワードの指定規則を必ず確認してください。パスワードの指定規則については,「1.4.2 認可識別子およびパスワードの指定規則」を参照してください。

なお,このオプションを省略してadbexportコマンドを実行すると,パスワードの入力を求める応答メッセージが表示されます。バックグラウンドで実行する場合など,標準入力からパスワードを入力できない環境では,このオプションを省略しないでください。

-k 囲み文字|none}

〜〈文字列〉((1バイト))《"

出力データファイル中のフィールドデータを囲む,囲み文字を指定します。このオプションを省略した場合は,囲み文字として二重引用符(")が仮定されます。このオプションにnoneを指定した場合は,囲み文字なしでデータが出力されます。

指定規則を次に示します。

  • み文字として指定できる文字は,1バイト文字だけです。2バイト以上の文字列は指定できません。

  • に示す文字も囲み文字として指定できません。

    • 空白,タブ,アスタリスク(*

    • 区切り文字(-sオプションの指定値または省略値)と同じ文字

  • ポストロフィ( ' )を囲み文字として指定する場合は,二重引用符(")で囲んで指定してください。

    (例)アポストロフィ( ' )を囲み文字として指定する場合の例

    adbexport … -k "'" …

  • トローク()のように,シェルが別の意味で使用している特殊文字を囲み文字として指定する場合は,二重引用符(")またはアポストロフィ( ' )で囲んで指定してください。

    (例)ストローク()を囲み文字として指定する場合の例

    adbexport … -k "|" …

  • クスポート処理の対象となる表に数データまたは日時データが定義されている場合は,囲み文字に数データまたは日時データで扱う文字を指定しないでください。指定すると,出力したデータを再度インポートする際に変換エラーとなることがあります。

  • エクスポート処理の対象となる表に配列型の列が定義されている場合は,囲み文字に波括弧({})を指定しないでください。指定すると,出力したデータを再度インポートする際に変換エラーとなることがあります。

重要

字データに囲み文字と同じ文字が含まれる場合,その文字は2つ連続で出力されます。

重要

このオプションにnoneを指定すると,出力データファイルには,すべてのデータ型で囲み文字なしの状態で,データが出力されます。囲み文字なしのデータが出力された出力データファイルは,adbimportコマンドの入力データファイルとして使用できない場合があります。例を次に示します。

(例1)CHARACTER型の列にデータ「A,B,C」が格納されている場合

出力されたデータは「A,B,C」になります。このデータを,区切り文字にコンマ( , )を指定してインポートすると,「A」,「B」,「C」という別々のデータとして扱われます。つまり,「A,B,C」という1つのデータとしては扱われません。そのため,表に対して想定どおりにデータが格納されなかったり,インポートエラーが発生したりするおそれがあります。

(例2)VARCHAR型の列に長さが0バイトのデータが格納されている場合

出力されたデータは,長さが0バイトの文字列になります。このデータを,囲み文字なしでインポートすると,ナル値として扱われます。そのため,元のデータとは異なったデータとして扱われてしまいます。

(例3)CHARACTER型の列に改行コード(\n)を含むデータ「AB\nC」が格納されている場合

出力されたデータは「AB\nC」になります。このデータをインポートすると,「AB」,「C」という別々のデータとして扱われます。つまり,「AB\nC」という1つのデータとしては扱われません。そのため,表に対して想定どおりにデータが格納されなかったり,インポートエラーが発生したりするおそれがあります。

-s 区切り文字|tab}

〜〈文字列〉((1バイト))《 ,

出力データファイル中のフィールドデータを区切る,区切り文字を指定します。区切り文字にタブを指定する場合は,tabを指定してください。このオプションを省略した場合は,区切り文字としてコンマ( , )が仮定されます。

指定規則を次に示します。

  • 切り文字として指定できる文字は,tabまたは1バイト文字だけです。tab以外の2バイト以上の文字列は指定できません。

  • に示す文字も区切り文字として指定できません。

    • 英大文字(AZ),英小文字(az),数字(09),下線(_),二重引用符("),アスタリスク(*

    • 囲み文字(-kオプションの指定値または省略値)と同じ文字

  • に示す文字は表データの文字コードと重なるおそれがあるため,区切り文字として適していません。

    • 符号(+-),スラッシュ(/),コロン(:),ピリオド(.),|\[](){}~など

  • ポストロフィ( ' )を区切り文字として指定する場合は,二重引用符(")で囲んで指定してください。

    (例)アポストロフィ( ' )を区切り文字として指定する場合の例

    adbexport … -s "'" …

  • トローク()のように,シェルが別の意味で使用している特殊文字を区切り文字として指定する場合は,二重引用符(")またはアポストロフィ( ' )で囲んで指定してください。

    (例)ストローク()を区切り文字として指定する場合の例

    adbexport … -s "|" …

  • エクスポート処理の対象となる表に配列型の列が定義されている場合は,区切り文字に波括弧({})を指定しないでください。指定すると,出力したデータを再度インポートする際に変換エラーとなることがあります。

-g データエクスポート処理の経過メッセージの出力間隔

〜〈整数〉((0〜1,000,000,000))《0》(単位:1,000行)

データエクスポート処理の経過メッセージの出力間隔を指定します。例えば,このオプションに2を指定すると,データエクスポート処理が2,000行終わるごとに経過メッセージ(KFAA80205-I)が出力されます。

このオプションを省略した場合,またはこのオプションに0を指定した場合,経過メッセージは出力されません。

-z エクスポートオプションファイル名

〜〈OSパス名〉((2〜510バイト))

エクスポートオプションを指定したエクスポートオプションファイルの絶対パス名を指定します。このオプションを省略すると,エクスポートオプションファイルが指定されないため,すべてのエクスポートオプションにデフォルト値が仮定されます。

エクスポートオプションについては,「14.2.2 エクスポートオプションの形式」を参照してください。

なお,エクスポートオプションファイル名は,ほかのファイル名と重複しないようにしてください。重複した場合,ファイル中のデータが失われるおそれがあります。エクスポートオプションファイル名と重複しないようにする必要があるファイルについては,「14.8 注意事項」を参照してください。

-q SQL記述ファイル名

〜〈OSパス名〉((2〜510バイト))

SQL記述ファイルの絶対パス名を指定します。このオプションを指定した場合,-cオプションは指定できません。

SQL記述ファイルは,任意の検索結果をエクスポートする際に,検索に使用するSELECT文を記載したファイルです。

SQL記述ファイルの指定例を次に示します。

SQL記述ファイルの指定例

/*COMMENT*/ SELECT * FROM "TABLE01"
WHERE "C1" < 3000

SQL記述ファイルの指定規則を次に示します。

  • SQL記述ファイルに指定できるSQL文の最大サイズは,16,000,000バイトです。

  • SQL記述ファイル中に複数のSQL文は指定できません。

  • SQL記述ファイル中に?パラメタは指定できません。

  • SQL記述ファイルは,HADBサーバをインストールしたマシンの環境変数ADBLANGに設定した文字コードで作成してください。

  • X'00'X'1F'のコードを指定した場合,半角空白に変換されて解釈されます。

  • SQL文の途中で改行することができます。改行する場合の改行コードは,X'0A'LF)またはX'0D0A'CRLF)としてください。SQL文の途中で改行すると,改行が半角空白に変換され,連結されて解釈されます。

  • SQL記述ファイル中の「/*」から,それ以降に現れる最初の「*/」までのすべての文字は注釈と見なされます。注釈の詳細については,マニュアルHADB SQLリファレンス基本項目SQLの記述規則分離符号に関する規則にある注釈を参照してください。

  • SQL文の終わりに,1文字分だけセミコロン( ; )を指定できます。指定したセミコロンは,半角空白に変換されて解釈されます。なお,指定したセミコロンの後ろに指定できる文字列は,半角空白,タブ,および改行だけです。

重要

作業表を作成する可能性がある検索(ORDER BY句,GROUP BY句,DISTINCTなどを指定した検索)の場合,adbexportコマンドを実行してから経過メッセージや出力件数のメッセージが出力されるまでに,時間が掛かることがあります。

SQL記述ファイル中に指定したSQL文で検索できる表は,次のとおりです。

  • EXPORT TABLE権限を持っている実表またはビュー表

    自分が所有している実表またはビュー表を検索する場合は,スキーマ名を省略できます。ほかのHADBユーザが所有している実表またはビュー表を検索する場合は,スキーマ名を指定してください。

  • ディクショナリ表またはシステム表

    ディクショナリ表またはシステム表を検索する場合は,スキーマ名に"MASTER"を指定してください。

なお,実際に実行したSQL文はメッセージログファイルに出力されます。

-n 処理対象表

データを出力する表を「スキーマ名.表識別子」の形式で指定します。スキーマ名または表識別子中に,英小文字または\がある場合の指定規則については,「1.4.3 表名の指定規則」を参照してください。

マルチチャンク表のデータをチャンク単位で出力したい場合は,このオプションと同時に-cオプションを指定してください。

このオプションに指定できる表は次のとおりです。

  • EXPORT TABLE権限を持っている実表またはビュー表

    自分が所有している実表またはビュー表を検索する場合は,スキーマ名を省略できます。ほかのHADBユーザが所有している実表またはビュー表を検索する場合は,スキーマ名を指定してください。

  • ディクショナリ表またはシステム表

    ディクショナリ表またはシステム表を検索する場合は,スキーマ名に"MASTER"を指定してください。

-c チャンクID

〜〈整数〉((1〜9,223,372,036,854,775,807))

マルチチャンク表のデータをチャンク単位で出力したい場合,このオプションにチャンクIDを指定します。このオプションを使用すると,指定したチャンクIDのチャンクが待機状態の場合も,対象のチャンクに含まれるデータを出力できます。

このオプションを指定する場合,必ず-nオプションにマルチチャンク表を指定してください。また,このオプションを指定する場合,-qオプションは指定できません。

指定したチャンクIDが処理対象表に存在しない場合,出力データは0件になります。

チャンクIDの検索方法を次に示します。

  • システム表のSTATUS_CHUNKSを検索する

    システム表のSTATUS_CHUNKSを検索し,チャンクIDを確認してください。詳細については,マニュアルHADB システム構築・運用ガイドシステム表システム表の検索表名から表内の全チャンクの情報を調べる場合を参照してください。

  • adbdbstatusコマンドを実行する

    次に示すコマンドを実行して,DBエリア,表とインデクスの使用量情報を出力し,チャンクID(Chunk_ID)を確認してください(結果はCSV形式で出力されます)。DBエリア,表とインデクスの使用量情報で出力される項目の詳細については,「13.7.2 DBエリア,表とインデクスの使用量情報で出力される項目の一覧」を参照してください。

    adbdbstatus -d used -c table -n 実表名

    実表名は「スキーマ名.表識別子」の形式で指定してください。

--compress GZIP

出力データファイルを圧縮してGZIP形式のファイルとしてエクスポートしたい場合に,このオプションを指定します。

--with-column-name

各出力データファイルの1行目に列名を出力したい場合に,このオプションを指定します。

このオプションと同時に指定するオプションによって,出力される列名が決まります。出力される列名の規則を次の表に示します。

表14‒2 出力される列名

項番

同時に指定するオプション

出力される列名

1

-nオプション(処理対象表のデータを出力する場合)

処理対象表の列名

2

-qオプションSQL記述ファイル中のSQL文の検索結果を出力する場合)

SQL記述ファイルに指定したSQL文の問合せ式の結果,導出される表の列名(検索項目列名)

(例)次に示すSQL文をSQL記述ファイルに指定した場合,列名として「C1」「MAX_C2」「MIN_C2」が出力されます。

SELECT "C1",MAX("C2") AS "MAX_C2",MIN("C2") AS "MIN_C2"
    FROM "T1" GROUP BY "C1"

導出される表の列名規則については,マニュアルHADB SQLリファレンスSELECT文の指定形式および規則にある規則を参照してください。

各列名はVARCHAR型の列のデータと同じ形式で出力されます。VARCHAR型の出力形式については,「14.5.3 フィールドデータの出力形式」を参照してください。

出力データファイルを複数指定した場合,すべての出力データファイルの1行目に列名が出力されます。ただし,データが出力されないファイルには列名が出力されません。

重要

出力データファイルをadbimportコマンドの入力データファイルとして使用する場合は,このオプションを指定しないでください。このオプションを指定して出力したファイルをadbimportコマンドの入力データファイルとして使用すると,列名も表データとして格納されてしまいます。

出力データパスファイル名

〜〈OSパス名〉((2〜510バイト))

出力データパスファイルを絶対パス名で指定します。指定するパス名に半角空白を含む場合は,パス名全体をアポストロフィ(')で囲んでください。

出力データパスファイルには,出力データファイルの格納場所を指定します。出力データファイルの格納場所は,2〜510バイトの絶対パスで指定してください。パス名として使用できる文字は,出力データパスファイル名と同じです。

なお,HADBサーバは,出力データファイルに拡張子を付与しません。指定した出力データファイルの絶対パスのとおりに,出力データファイルが作成されます。そのため,--compress GZIPオプションを指定する場合,出力データファイルの絶対パスの末尾に,拡張子「.gz」を指定することを推奨します。末尾に拡張子「.gz」を指定することで,エクスポートされたファイルがGZIP形式のファイルであると判別しやすくなります。

データエクスポート処理の性能を向上させるために,出力データファイルの格納場所は,複数指定することを推奨します。ただし,検索結果の並びのとおりにファイルに出力したい場合は,出力データファイルの格納場所を1個だけ指定してください。

また,1つのディレクトリ下に格納される出力データファイルに対して出力が集中すると,性能低下の原因になります。そのため,出力データファイルの格納場所として異なるディスクのディレクトリを指定して,ディスクに対する出力処理の負荷分散をすることを推奨します。

出力データパスファイルの指定例を次に示します。

■出力データパスファイルの指定例(--compress GZIPオプションを指定していない場合)

/mnt/diska/wwwww/exp1.csv
/mnt/diskb/xxxxx/exp2.csv
/mnt/diskc/yyyyy/exp3.csv
/mnt/diskd/zzzzz/exp4.csv

この例では,4つの出力データファイルに出力するとして,出力データファイルの格納場所をそれぞれ指定しています。

■出力データパスファイルの指定例(--compress GZIPオプションを指定している場合)

/mnt/diska/wwwww/exp1.csv.gz
/mnt/diskb/xxxxx/exp2.csv.gz
/mnt/diskc/yyyyy/exp3.csv.gz
/mnt/diskd/zzzzz/exp4.csv.gz

この例では,4つの出力データファイル(GZIP形式で圧縮されたファイル)に出力するとして,出力データファイルの格納場所をそれぞれ指定しています。

なお,--compress GZIPオプションを指定している場合は,上記の例のように,出力データファイルの絶対パスの末尾に,拡張子「.gz」を指定することを推奨します。末尾に拡張子「.gz」を指定することで,エクスポートされたファイルがGZIP形式のファイルであると判別しやすくなります。

重要
  • adbexportコマンドを実行すると,出力データパスファイルに指定した出力データファイルの格納場所すべてに,空のファイルが作成されます。そのあとで,各ファイルにデータが出力されます。このため,ファイルに出力するデータがない場合でも,0バイトのファイルが作成されます。

    なお,--compress GZIPオプションを指定している場合で,ファイルに出力するデータがないときは,0バイトのファイル(GZIP形式)が作成されます。

  • 出力データファイルを複数指定した場合,ファイルごとに出力されるデータ件数にばらつきが出ます。その影響で,データ件数が0件のファイルが作成されることがあります。

  • 出力データパスファイルに指定した出力データファイルの格納場所に,出力データファイルと同名のファイルがすでに存在する場合,adbexportコマンドはエラーとなります。既存のファイルを移動するか削除するかしたあとで,adbexportコマンドを再実行してください。

なお,adbexportコマンド以外のプログラムで使用するファイル名と,出力データパスファイル名,およびファイル中に指定する出力データファイルの格納場所が重複しないようにしてください。重複した場合,ほかのプログラムによって,出力データパスファイルおよび出力データファイルのデータが失われるおそれがあります。出力データパスファイル名,および出力データファイルの格納場所と重複しないようにする必要があるファイルについては,「14.8 注意事項」を参照してください。