Merge pull request #16514 from taosdata/fix/ZhiqiangWang/TD-18733-shell-csv-rfc-4180
feature: shell csv rfc 4180
This commit is contained in:
commit
b6c6f8666b
|
@ -1,4 +1,4 @@
|
||||||
char version[12] = "${TD_VER_NUMBER}";
|
char version[64] = "${TD_VER_NUMBER}";
|
||||||
char compatible_version[12] = "${TD_VER_COMPATIBLE}";
|
char compatible_version[12] = "${TD_VER_COMPATIBLE}";
|
||||||
char gitinfo[48] = "${TD_VER_GIT}";
|
char gitinfo[48] = "${TD_VER_GIT}";
|
||||||
char buildinfo[64] = "Built at ${TD_VER_DATE}";
|
char buildinfo[64] = "Built at ${TD_VER_DATE}";
|
||||||
|
|
|
@ -492,7 +492,6 @@ static char* shellFormatTimestamp(char* buf, int64_t val, int32_t precision) {
|
||||||
static void shellDumpFieldToFile(TdFilePtr pFile, const char* val, TAOS_FIELD* field, int32_t length,
|
static void shellDumpFieldToFile(TdFilePtr pFile, const char* val, TAOS_FIELD* field, int32_t length,
|
||||||
int32_t precision) {
|
int32_t precision) {
|
||||||
if (val == NULL) {
|
if (val == NULL) {
|
||||||
taosFprintfFile(pFile, "%s", TSDB_DATA_NULL_STR);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -540,13 +539,34 @@ static void shellDumpFieldToFile(TdFilePtr pFile, const char* val, TAOS_FIELD* f
|
||||||
case TSDB_DATA_TYPE_BINARY:
|
case TSDB_DATA_TYPE_BINARY:
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
case TSDB_DATA_TYPE_NCHAR:
|
||||||
case TSDB_DATA_TYPE_JSON:
|
case TSDB_DATA_TYPE_JSON:
|
||||||
memcpy(buf, val, length);
|
{
|
||||||
buf[length] = 0;
|
char quotationStr[2];
|
||||||
taosFprintfFile(pFile, "\'%s\'", buf);
|
int32_t bufIndex = 0;
|
||||||
|
quotationStr[0] = 0;
|
||||||
|
quotationStr[1] = 0;
|
||||||
|
for (int32_t i = 0; i < length; i++) {
|
||||||
|
buf[bufIndex] = val[i];
|
||||||
|
bufIndex++;
|
||||||
|
if (val[i] == '\"') {
|
||||||
|
buf[bufIndex] = val[i];
|
||||||
|
bufIndex++;
|
||||||
|
quotationStr[0] = '\"';
|
||||||
|
}
|
||||||
|
if (val[i] == ',') {
|
||||||
|
quotationStr[0] = '\"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf[bufIndex] = 0;
|
||||||
|
if (length == 0) {
|
||||||
|
quotationStr[0] = '\"';
|
||||||
|
}
|
||||||
|
|
||||||
|
taosFprintfFile(pFile, "%s%s%s", quotationStr, buf, quotationStr);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||||
shellFormatTimestamp(buf, *(int64_t*)val, precision);
|
shellFormatTimestamp(buf, *(int64_t*)val, precision);
|
||||||
taosFprintfFile(pFile, "'%s'", buf);
|
taosFprintfFile(pFile, "%s", buf);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -266,7 +266,6 @@ char *shellFormatTimestamp(char *buf, int64_t val, int32_t precision) {
|
||||||
|
|
||||||
void shellDumpFieldToFile(TdFilePtr pFile, const char *val, TAOS_FIELD *field, int32_t length, int32_t precision) {
|
void shellDumpFieldToFile(TdFilePtr pFile, const char *val, TAOS_FIELD *field, int32_t length, int32_t precision) {
|
||||||
if (val == NULL) {
|
if (val == NULL) {
|
||||||
taosFprintfFile(pFile, "%s", TSDB_DATA_NULL_STR);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,13 +313,34 @@ void shellDumpFieldToFile(TdFilePtr pFile, const char *val, TAOS_FIELD *field, i
|
||||||
case TSDB_DATA_TYPE_BINARY:
|
case TSDB_DATA_TYPE_BINARY:
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
case TSDB_DATA_TYPE_NCHAR:
|
||||||
case TSDB_DATA_TYPE_JSON:
|
case TSDB_DATA_TYPE_JSON:
|
||||||
memcpy(buf, val, length);
|
{
|
||||||
buf[length] = 0;
|
char quotationStr[2];
|
||||||
taosFprintfFile(pFile, "\'%s\'", buf);
|
int32_t bufIndex = 0;
|
||||||
|
quotationStr[0] = 0;
|
||||||
|
quotationStr[1] = 0;
|
||||||
|
for (int32_t i = 0; i < length; i++) {
|
||||||
|
buf[bufIndex] = val[i];
|
||||||
|
bufIndex++;
|
||||||
|
if (val[i] == '\"') {
|
||||||
|
buf[bufIndex] = val[i];
|
||||||
|
bufIndex++;
|
||||||
|
quotationStr[0] = '\"';
|
||||||
|
}
|
||||||
|
if (val[i] == ',') {
|
||||||
|
quotationStr[0] = '\"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf[bufIndex] = 0;
|
||||||
|
if (length == 0) {
|
||||||
|
quotationStr[0] = '\"';
|
||||||
|
}
|
||||||
|
|
||||||
|
taosFprintfFile(pFile, "%s%s%s", quotationStr, buf, quotationStr);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||||
shellFormatTimestamp(buf, *(int64_t *)val, precision);
|
shellFormatTimestamp(buf, *(int64_t *)val, precision);
|
||||||
taosFprintfFile(pFile, "'%s'", buf);
|
taosFprintfFile(pFile, "%s", buf);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue