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

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

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

ポイント

本操作は、カラムナテーブルおよびシステム関数pgxa_import_table_dataのtablenameに更新権のあるデータベースユーザーで行ってください。また、以下のシステム関数へのアクセス権も必要です。

  • pgxa_import_table_data

  • pgxa_import_to_table

システム関数の権限の確認方法の詳細は、“J.5.28 システム関数の権限の確認方法”を参照してください。

蓄積テーブルとカラムナテーブルのカラム構成が同一の場合、pgxa_import_table_dataシステム関数を使用します。

例)
Windowspostgres=# SELECT pgxa_import_table_data('coltbl','odstbl','','C:\tmp\workdir');
Linuxpostgres=# SELECT pgxa_import_table_data('coltbl','odstbl','','/tmp/workdir');

参考

fluentdを利用したデータ連携によりODSにデータを蓄積する場合

fluentdを利用したデータ連携によりODSにデータを蓄積する場合、カラムナテーブルへデータをロードしたあとにもODSにデータが蓄積されていきます。

Windows以下のようなバッチファイルを一定間隔で実行することにより、ODSのデータをカラムナテーブルへ一定間隔で連携できます。

@echo off
setlocal

set LAST_DATETIME_FILE=c:\home\symfoas\work\lastdatetime.txt

if not exist %LAST_DATETIME_FILE% (
 set LAST_FLUENTD_ID_TIME=''0000-00-00 00:00:00''
) else (
 for /F "delims=\n"  %%i in ('type c:\lastdatetime.txt ') do set  LAST_FLUENTD_ID_TIME=''%%i''
)

set SQL= "SELECT pgxa_import_table_data('coltbl','odstbl','WHERE fluentd_time>=to_timestamp(%LAST_FLUENTD_ID_TIME%, ''YYYY-MM-DD HH24:MI:SS'')','c:\tmp\workdir')"
psql -d postgres -c %SQL%

for /F "delims=\n"  %%i in ('psql -t  -d postgres -c "SELECT max(fluentd_id_time) FROM coltbl" ') do set "TMP_VALUE1=%%i"
echo %TMP_VALUE1% > %LAST_DATETIME_FILE%

Linux以下のようなシェルを一定間隔で実行することにより、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.5 システム関数”を参照してください。