ページの先頭行へ戻る
Symfoware Analytics ServerV12.2.0 利用ガイド
FUJITSU Software

3.12.6 蓄積テーブルからカラムナテーブルへのロード

蓄積テーブルからカラムナテーブルへロードする方法について説明します。

ポイント

本操作は、カラムナテーブルおよびシステム関数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 システム関数”を参照してください。