蓄積テーブルからカラムナテーブルへロードする方法について説明します。
ポイント
本操作は、カラムナテーブルおよびシステム関数pgxa_import_table_dataのtablenameに更新権のあるデータベースユーザーで行ってください。また、以下のシステム関数へのアクセス権も必要です。
pgxa_import_table_data
pgxa_import_to_table
システム関数の権限の確認方法の詳細は、“J.4.28 システム関数の権限の確認方法”を参照してください。
蓄積テーブルとカラムナテーブルのカラム構成が同一の場合、pgxa_import_table_dataシステム関数を使用します。
例)
postgres=# SELECT pgxa_import_table_data('coltbl','odstbl','','/tmp/workdir');
参考
fluentdを利用したデータ連携によりODSにデータを蓄積する場合
fluentdを利用したデータ連携によりODSにデータを蓄積する場合、カラムナテーブルへデータをロードしたあとにもODSにデータが蓄積されていきます。
以下のようなシェルを一定間隔で実行することにより、ODSのデータをカラムナテーブルへ一定間隔で連携できます。
#!/bin/sh if [ -e /home/symfoas/work/lastdatetime.txt ]; then . /home/symfoas/work/lastdatetime.txt elif LAST_FLUENTD_ID_TIME="0000-00-00 00:00:00" fi psql postgres -c "SELECT pgxa_import_from_table('coltbl', 'odstbl', 'WHERE fluentd_id_time > to_timestamp(''${LAST_FLUENTD_ID_TIME}'', ''YYYY-MM-DD HH24:MI:SS'')', '/tmp/workdir')" TMP_VALUE1=`psql postgres -c 'SELECT max(fluentd_id_time) FROM coltbl'` TMP_VALUE2=`echo ${TMP_VALUE1} | cut -d ' ' -f3-4` echo "LAST_FLUENTD_ID_TIME='${TMP_VALUE2}'" > /home/symfoas/work/lastdatetime.txt
参照
蓄積テーブルとカラムナテーブルのカラム構成が異なる場合
蓄積テーブルとカラムナテーブルのカラム構成が異なる場合、蓄積テーブルのデータをカラムナテーブルのカラム構成に合わせて加工したうえでロードする必要があります。
COPY文によりCSVファイルを作成したあと、pgxa_import_to_tableシステム関数を利用してそのデータをカラムナテーブルに格納してください。
COPY文の詳細は“PostgreSQL文書”の“COPY”を参照してください。
pgxa_import_to_tableおよびpgxa_import_sqlシステム関数の詳細は、“J.4 システム関数”を参照してください。