[TD-6443]<feature>: Support OpenTSDB HTTP JSON data import format
This commit is contained in:
parent
438fc24eb7
commit
5176237ec5
|
@ -663,3 +663,66 @@ int32_t tscParseJSONPayload(const char* payload, TAOS_SML_DATA_POINT* pSml, SSml
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t tscParseMultiJSONPayload(char* payload, SArray* points, SSmlLinesInfo* info) {
|
||||||
|
TAOS_SML_DATA_POINT point = {0};
|
||||||
|
int32_t code = tscParseJSONPayload(payload, &point, info);
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
tscError("OTD:0x%"PRIx64" data point line parse failed", info->id);
|
||||||
|
destroySmlDataPoint(&point);
|
||||||
|
return code;
|
||||||
|
} else {
|
||||||
|
tscDebug("OTD:0x%"PRIx64" data point line parse success", info->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
taosArrayPush(points, &point);
|
||||||
|
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int taos_insert_json_payload(TAOS* taos, char* payload) {
|
||||||
|
int32_t code = 0;
|
||||||
|
|
||||||
|
SSmlLinesInfo* info = tcalloc(1, sizeof(SSmlLinesInfo));
|
||||||
|
info->id = genUID();
|
||||||
|
|
||||||
|
if (payload == NULL) {
|
||||||
|
tscError("OTD:0x%"PRIx64" taos_insert_json_payload payload is NULL", info->id);
|
||||||
|
code = TSDB_CODE_TSC_APP_ERROR;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
SArray* lpPoints = taosArrayInit(1, sizeof(TAOS_SML_DATA_POINT));
|
||||||
|
if (lpPoints == NULL) {
|
||||||
|
tscError("OTD:0x%"PRIx64" taos_insert_json_payload failed to allocate memory", info->id);
|
||||||
|
tfree(info);
|
||||||
|
return TSDB_CODE_TSC_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
tscDebug("OTD:0x%"PRIx64" taos_insert_telnet_lines begin inserting %d points", info->id, 1);
|
||||||
|
code = tscParseMultiJSONPayload(payload, lpPoints, info);
|
||||||
|
size_t numPoints = taosArrayGetSize(lpPoints);
|
||||||
|
|
||||||
|
if (code != 0) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
TAOS_SML_DATA_POINT* points = TARRAY_GET_START(lpPoints);
|
||||||
|
code = tscSmlInsert(taos, points, (int)numPoints, info);
|
||||||
|
if (code != 0) {
|
||||||
|
tscError("OTD:0x%"PRIx64" taos_insert_json_payload error: %s", info->id, tstrerror((code)));
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
tscDebug("OTD:0x%"PRIx64" taos_insert_json_payload finish inserting 1 Point. code: %d", info->id, code);
|
||||||
|
points = TARRAY_GET_START(lpPoints);
|
||||||
|
numPoints = taosArrayGetSize(lpPoints);
|
||||||
|
for (int i=0; i<numPoints; ++i) {
|
||||||
|
destroySmlDataPoint(points+i);
|
||||||
|
}
|
||||||
|
|
||||||
|
taosArrayDestroy(lpPoints);
|
||||||
|
|
||||||
|
tfree(info);
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue