2つ以上のデータ・スライスを1つのデータ・スライスにマージします。オプションで、プライマリ・データベース・スライスを除外できます。
この関数は、集約ストレージ・データベースにのみ適用されます。
構文
ESS_FUNC_M EssMergeDatabaseData (
hCtx, AppName, DbName, ulOptions
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
AppName |
ESS_STR_T |
NULLを使用します。関数は常に現在選択されているデータベースに適用されます。 |
DbName |
ESS_STR_T |
NULLを使用します。関数は常に現在選択されているデータベースに適用されます。 |
ulOptions |
ESS_ULONG_T |
次の定数のいずれかになります:
|
戻り値
正常終了の場合は0が戻され、それ以外の場合はエラー・コードが戻されます。
例
void TestMergeDatabaseData(ESS_HCTX_T hCtx, ESS_STR_T AppName, ESS_STR_T DbName)
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_SHORT_T isAbortOnError;
ESS_OBJDEF_T Rules;
ESS_OBJDEF_T Data;
ESS_PMBRERR_T pMbrErr = NULL;
ESS_PMBRUSER_T pMbrUser = NULL;
ESS_ULONG_T ulBufferId;
ESS_ULONG_T ulDuplicateAggregationMethod;
ESS_ULONG_T ulOptionsFlags;
ESS_ULONG_T ulSize;
ESS_ULONG_T ulBufferCnt;
ESS_ULONG_T ulCommitType ;
ESS_ULONG_T ulActionType;
ESS_ULONG_T ulOptions;
ESS_ULONG_T ulBufferIdAry[1];
ESS_ULONG_T options;
printf("\nCreate the buffer:\n");
ulDuplicateAggregationMethod = ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ADD;
ulOptionsFlags = ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES;
ulSize = 100;
ulBufferId = 1;
sts = EssLoadBufferInit(hCtx, AppName, DbName, ulBufferId, ulDuplicateAggregationMethod,
ulOptionsFlags, ulSize);
printf("EssLoadBufferInit sts: %ld\n", sts);
/* Server object */
Rules.hCtx = hCtx;
Rules.AppName = AppName;
Rules.DbName = DbName;
Rules.ObjType = ESS_OBJTYPE_RULES;
Rules.FileName = "ddldinaq";
Data.hCtx = hCtx;
Data.AppName = AppName;
Data.DbName = DbName;
Data.ObjType = ESS_OBJTYPE_TEXT;
Data.FileName = "ddldinaq_slice1a";
isAbortOnError = ESS_TRUE;
printf("\nLoad into buffer:\n");
sts = EssImportASO (hCtx, &Rules, &Data, &pMbrErr, pMbrUser, isAbortOnError, ulBufferId);
printf("EssImportASO sts: %ld\n",sts);
if(pMbrErr)
EssFreeMbrErr(hCtx, pMbrErr);
ulBufferCnt = 1;
ulBufferIdAry[0] = ulBufferId;
ulCommitType = ESS_ASO_DATA_LOAD_BUFFER_STORE_DATA;
ulActionType = ESS_ASO_DATA_LOAD_BUFFER_COMMIT;
printf("\Create a new slice:\n");
ulOptions = ESS_ASO_DATA_LOAD_INCR_TO_NEW_SLICE;
sts = EssLoadBufferTerm(hCtx, AppName, DbName, ulBufferCnt, ulBufferIdAry, ulCommitType,
ulActionType, ulOptions);
printf("EssLoadBufferTerm sts: %ld\n",sts);
options = ESS_MERGE_DATABASE_DATA_ALL;
printf("\nMerge all data into one slice:\n");
sts = EssMergeDatabaseData(hCtx, AppName, DbName, options);
printf("EssMergeDatabaseData sts: %ld\n",sts);
}
関連トピック