機能
カラムナテーブルから、固定長形式でレコードを抽出します。
書式
pgxa_export_fixed_data(tablename, outputfile, condition, lfcode, encoding, format)
引数
詳細は以下のとおりです。
引数 | データ型 | 意味 |
---|---|---|
tablename | text | 格納先テーブル名(外部テーブル名) |
outputfile | text | 出力ファイル名 |
condition | text | 出力条件、または、クエリ |
lfcode | text | 改行コード
|
encoding | text | 文字コード
|
format | text | 出力ファイルのレコードフォーマット |
戻り値
戻り値 | 意味 |
---|---|
TRUE | 正常終了 |
FALSE | 異常終了 |
説明
テーブル名は、すでに定義済の外部テーブル名、または、''を指定してください。
テーブル名に、''を指定した場合、出力条件には、出力したいクエリ(SQL文)を指定します。この際、クエリに指定する外部テーブル名は、CREATE FOREIGN TABLE文の"SERVER dwh_server OPTIONS"句の'table'に設定したテーブル名を代わりに指定する必要があります。
未定義の外部テーブル名を指定した場合はエラーとなります。
カラムナテーブルが未定義の場合はエラーとなります。
出力ファイル名は、DWHサーバ上のファイルを絶対パスで指定してください。
出力条件はPostgreSQLに記述可能な条件式のうち、“PostgreSQL文書”の“WHERE句”で指定可能な評価式のうち、以下のものが指定可能です。
評価式を構成する要素 | 定数またはリテラル値 | |
列の参照 | ||
演算子 | ||
指定可能な演算子 | 比較演算子 | =, !=, <>, >, <, >=, <= |
論理演算子 | AND, OR, NOT | |
パターン条件演算子 | LIKE |
括弧を使用することで、複合的な条件式を記載することも可能です。
出力条件に指定した文字列中に';'を指定した場合、以降の文字列は無視されます。ただし、リテラル値に含まれる場合はこの限りではありません。
出力条件は65535バイト以内で記述してください。
改行コードに''を指定した場合、行の区切りとしての改行コードを出力しません。
文字コードに'SJIS'を指定した場合、コード変換できない文字データの情報をログに出力します。
char型、varchar型の列に対して、実際のデータが、出力形式のレコードフォーマットで指定した列毎のデータ長より長い場合、データは切り捨てられます。マルチバイト文字の途中で切り捨てが発生した場合、そのマルチバイト文字を'_'に置き換え、以降のデータを切り捨てます。また、このときエラー情報はログに出力されます。
ログの出力先は、パラメーターsymas_ext.logdirで指定します。symas_ext.logdirに指定がない場合は、ログはDWHサーバのセットアップで設定した[データベースのデータ格納先ディレクトリ]に出力されます。パラメーターの変更方法に関しては、“利用ガイド”の“システム関数制御パラメーター”を参照してください。
ログのファイル名は“5.43 各システム関数が出力するログファイル”を参照してください。
出力形式のレコードフォーマットは、pgxa_import_fixed_dataの入力形式のレコードフォーマットと同様に、列毎のデータ長をカンマ区切りで記述します。
作業用ディレクトリは、出力するファイルのサイズと同等の空きが必要です。
書式1を利用する場合、同名のファイルが存在していたときの動作については、システム関数制御パラメーター symas_ext.overwriteで指定します。“上書きします”、または“エラーにします”のどれかを指定できます。省略した場合は“エラーにします”として指定されます。パラメーターの変更方法については“利用ガイド”の“システム関数制御パラメーター”を参照してください。
出力ファイル名に存在しないファイル名を指定した場合、DWHサーバ管理者ユーザーで作成されます。
本関数をDWHサーバ管理者ユーザー以外のユーザーで実行する場合、事前に対象のユーザーで出力ファイルを作成したあと、本関数を上書き可能モード(symas_ext.overwrite)に“true”を設定して実行してください。
出力ファイルの作成
touch /tmp/file.txt
作成した出力ファイルの確認
ls -alrt /tmp/file.txt -rw-rw-r-- 1 test1 root 0 5月 18 16:15 2016 /tmp/file.txt
システム関数pgxa_export_fixed_dataの実行
psql -U test1 -d postgres -c "set symas_ext.overwrite = true; SELECT pgxa_export_fixed_data('public.tbl1', '/tmp/file.txt', '', 'LF', 'SJIS', '5,5,5' ); pgxa_export_fixed_data
出力ファイルの確認
ls -alrt /tmp/file.txt -rw-rw-r-- 1 test1 root 450 5月 18 16:16 2016 /tmp/file.txt