集約ストレージ・データベースに対する非同期データ・ロード要求を発行します。
非同期データ・ロードおよび次元構築を使用する場合、このプロセス中に次の情報をクエリーできます:
次元構築/データ・ロード・プロセスの状態: 進行中、最終段階または完了済
次元構築/データ・ロード・プロセスの段階: データ・ソースを開いている最中、アウトラインの読取り中、次元の構築中、アウトラインの確認中またはアウトラインの書込み中
現在までに処理されたデータ・レコード数と拒否されたデータ・レコード数
エラー・ファイルの名前および場所
現在までに処理されたデータ・レコードと拒否されたデータ・レコード
構文
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);
}
}
}
}
関連トピック