EssAsyncImportASO

集約ストレージ・データベースに対する非同期データ・ロード要求を発行します。

非同期データ・ロードおよび次元構築を使用する場合、このプロセス中に次の情報をクエリーできます:

構文

            ESS_FUNC_M EssAsyncImportASO (
            hCtx, pRules, pData, pUser, usAbortOnError, ulBufferId
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

APIコンテキスト・ハンドル。

pRules

ESS_POBJDEF_T

ルール・ファイル・オブジェクト定義構造体へのポインタ。

pData

ESS_POBJDEF_T

データ・ファイル・オブジェクト定義構造体へのポインタ。

pUser

ESS_PMBRUSER_T

SQLユーザー構造体へのポインタ(データ・ソースがSQLデータベースの場合)。SQLユーザー構造体がNULLの場合は、SQL以外のデータ・ソースを示します。

usAbortOnError

ESS_USHORT_T

TRUEの場合、最初のエラーでインポートが停止します。それ以外の場合は続行します。

ulBufferID

ESS_ULONG_T

データ・ロード・バッファのID (1から999,999までの数)。データのロードが完了する前にバッファを廃棄するには、バッファを初期化する場合に使用したものと同じulBufferId番号を使用する必要があります。

備考

この関数は、データ・オブジェクトがクライアント上にある場合はエラーを戻します。エラーが戻された場合でも、クライアントとサーバー間のネットワーク接続はアクティブなままです。

接続を閉じるには、EssCloseAsyncProcを呼び出す必要があります。接続を閉じていない場合、サーバー要求ハンドラにより、同じログイン・セッションからの後続の要求がブロックされます。

戻り値

正常終了の場合は0が戻されます。それ以外の場合、エラー・コードが戻されます。

アクセス

この関数を使用するには、呼出し元が、指定したデータベースに対するデータベース・デザイナ権限(ESS_PRIV_DBDESIGN)を持っている必要があります。

         
void ESS_AsyncImportASO()
{
	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_STR_T errorName;
	ESS_BLDDL_STATE_T procState;
	ESS_BOOL_T errFileOverWrite;

	szAppName = "ASOSamp";
	szDbName = "Sample";
	ESS_SetActive();

	errorName = ".\\asyncProcess.err";
	errFileOverWrite = ESS_TRUE;
	ulDuplicateAggregationMethod = ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ADD;
	ulOptionsFlags = ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES;
	ulSize = 1;
	ulBufferId = 100;
	sts = EssLoadBufferInit(hCtx, szAppName, szDbName, ulBufferId, ulDuplicateAggregationMethod, 
		ulOptionsFlags, ulSize);
	printf("EssLoadBufferInit sts: %ld\n", sts);
	if(!sts)
	{
		/* Server object */
		Rules.hCtx     = hCtx;
		Rules.AppName  = szAppName;
		Rules.DbName   = szDbName;
		Rules.ObjType  = ESS_OBJTYPE_RULES;
		Rules.FileName = "Dataload";
		Data.hCtx      = hCtx;
		Data.AppName   = szAppName;
		Data.DbName    = szDbName;
		Data.ObjType   = ESS_OBJTYPE_TEXT;
		Data.FileName  = "Dataload";

		isAbortOnError = ESS_TRUE; 
		sts = EssAsyncImportASO (hCtx, &Rules, &Data, pMbrUser, isAbortOnError, ulBufferId);
		printf("EssAsyncImportASO sts: %ld\n",sts);
		if(!sts)
		{
			sts = EssGetAsyncProcState(hCtx, &procState);
			printf("EssGetAsyncProcState sts: %ld\n",sts);
			if(!sts)
			{
				do
				{
					DisplyProcesStateInfo(procState);
					if(procState.ilProcessStatus)
					{
						sts = EssCancelAsyncProc(hCtx, errorName, errFileOverWrite);
						printf("EssCancelAsyncProc sts: %ld\n",sts);
					}
					else
					{
						sts = EssGetAsyncProcState(hCtx, &procState);
						printf("EssGetAsyncProcState sts: %ld\n",sts);
					}

				}while(procState.usProcessState != ESS_BLDDL_STATE_DONE);

				sts = EssCloseAsyncProc(hCtx, &procState);
				printf("EssCloseAsyncProc sts: %ld\n",sts);

				ulBufferCnt = 1;
				ulBufferIdAry[0] = ulBufferId;
				ulCommitType = ESS_ASO_DATA_LOAD_BUFFER_STORE_DATA;
				ulActionType = ESS_ASO_DATA_LOAD_BUFFER_COMMIT;
				printf("\nIncrement to main slice:\n");
				ulOptions = ESS_ASO_DATA_LOAD_INCR_TO_MAIN_SLICE;
				sts = EssLoadBufferTerm(hCtx, szAppName, szDbName, ulBufferCnt, ulBufferIdAry, ulCommitType, ulActionType, ulOptions);
				printf("EssLoadBufferTerm sts: %ld\n",sts);
			}
		}
	}
}
      

関連トピック