機能
カラムナテーブルから、CSV(可変長)形式でレコードを抽出します。
書式1
pgxa_export_from_table(tablename, outputfile, condition, delimiterr, lfcode, encoding)
書式2
pgxa_export_from_table(tablename, outputfile, condition )
引数
詳細は以下のとおりです。
引数 | データ型 | 意味 |
---|---|---|
tablename | text | 格納先テーブル名(外部テーブル名) |
outputfile | text | 出力ファイル名(260バイト未満) |
condition | text | 出力条件(最大65535バイト) |
delimiter | text | 区切り文字(注1)
|
lfcode | text | 改行コード(注2)
|
encoding | text | 文字コード(注3)
|
注1) 書式2の場合はカンマ','です。
注2) Windowsの場合:書式2の場合は'CR+LF'です。
注2) Linuxの場合:書式2の場合は'LF'です。
注3) 書式2の場合は'UTF8'です。
戻り値
戻り値 | 意味 |
---|---|
TRUE | 正常終了 |
FALSE | 異常終了 |
実行例
Windowsの場合
省略可能な引数を省略した場合の実行例です。
> psql postgres psql (x.y.z) Type "help" for help. postgres=# SELECT pgxa_export_from_table('scm.tbl1', 'd:\data\output.csv', 'where col1>0 and col2=''abc''' ); pgxa_export_from_table ------------------------ t (1 row)
x.y.z : PostgreSQLのバージョンが表示されます。
すべての引数を指定した場合した場合の実行例です。
$ psql postgres psql (x.y.z) Type "help" for help. postgres=# SELECT pgxa_export_from_table('scm.tbl1','d:\data\output.csv','WHERE col1=1 and col2=''abc''',',','CRLF','SJIS'); pgxa_export_from_table ------------------------ t (1 row)
x.y.z : PostgreSQLのバージョンが表示されます。
Linuxの場合
省略可能な引数を省略した場合の実行例です。
> psql postgres psql (x.y.z) Type "help" for help. postgres=# SELECT pgxa_export_from_table('scm.tbl1', '/data/output.csv', 'where col1>0 and col2=''abc''' ); pgxa_export_from_table ------------------------ t (1 row)
x.y.z : PostgreSQLのバージョンが表示されます。
すべての引数を指定した場合した場合の実行例です。
$ psql postgres psql (x.y.z) Type "help" for help. postgres=# SELECT pgxa_export_from_table('scm.tbl1','/data/output.csv','WHERE col1=1 and col2=''abc''',',','CRLF','SJIS'); pgxa_export_from_table ------------------------ t (1 row)
x.y.z : PostgreSQLのバージョンが表示されます。
説明
テーブル名は、すでに定義済の外部テーブル名、または、''を指定してください。
テーブル名に、''を指定した場合、出力条件には、出力したいクエリ(SQL文)を指定します。(書式1のみ)
この際、クエリに指定する外部テーブル名は、CREATE FOREIGN TABLE文の"SERVER dwh_server OPTIONS"句の'table'に設定したテーブル名を代わりに指定する必要があります。
未定義の外部テーブル名を指定した場合はエラーとなります。
カラムナテーブルが未定義の場合はエラーとなります。
出力ファイル名は、DWHサーバ上のファイルを絶対パスで指定してください。
出力条件の記述方法は、“5.18 pgxa_export_fixed_data” を参照してください。
出力ファイルの文字コードに'SJIS'を指定した場合、コード変換できない文字データの情報をログに出力します。ログの出力先は、パラメーター symas_ext.logdirで指定します。symas_ext.logdirに指定がない場合は、ログはDWHサーバのセットアップで設定した[データベースのデータ格納先ディレクトリ]に出力されます。パラメーターの変更方法については、“利用ガイド”の“システム関数制御パラメーター”を参照してください。
ログのファイル名は“5.43 各システム関数が出力するログファイル”を参照してください。
本ファンクションを実行した場合、出力するデータの中間ファイルが出力されます。中間ファイルはパラメーター symas_ext.workdirで指定した作業用ディレクトリに出力されます。symas_ext.workdirに指定がない場合は、中間ファイルはDWHサーバのセットアップで設定した[データベースのデータ格納先ディレクトリ]に出力されます。パラメーターの変更方法に関しては、“利用ガイド”の“システム関数制御パラメーター”を参照してください。
作業用ディレクトリは、出力するファイルのサイズと同等の空きが必要です。
書式1を利用する場合、同名のファイルが存在していたときの動作については、システム関数制御パラメーター symas_ext.overwriteで指定します。“上書きします”、または“エラーにします”のどれかを指定できます。省略した場合は“エラーにします”として指定されます。パラメーターの変更方法については“利用ガイド”の“システム関数制御パラメーター”を参照してください。
書式1を利用する場合、出力ファイルの囲み文字については、システム関数制御パラメーター symas_ext.quotationにより指定できます。パラメーターの変更方法については“利用ガイド”の“システム関数制御パラメーター”を参照してください。
書式2を利用する場合、出力ファイルの囲み文字は'(シングルクォーテーション)となります。
出力ファイル名に存在しないファイル名を指定した場合、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_from_tableの実行
psql -U test1 -d postgres -c "set symas_ext.overwrite = true; SELECT pgxa_export_from_table('public.tbl1', '/tmp/file.txt', '', ',', 'LF', 'SJIS' );" pgxa_export_from_table
出力ファイルの確認
ls -alrt /tmp/file.txt -rw-rw-r-- 1 test1 root 450 5月 18 16:16 2016 /tmp/file.txt