Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
c4bc5649
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
c4bc5649
编写于
5月 06, 2021
作者:
sangshuduo
提交者:
GitHub
5月 06, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-3857]<fix>: taosdump database properties. (#6019)
Co-authored-by:
N
Shuduo Sang
<
sdsang@taosdata.com
>
上级
a392f310
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
117 addition
and
113 deletion
+117
-113
src/kit/taosdump/taosdump.c
src/kit/taosdump/taosdump.c
+117
-113
未找到文件。
src/kit/taosdump/taosdump.c
浏览文件 @
c4bc5649
...
...
@@ -72,7 +72,8 @@ enum _show_db_index {
TSDB_SHOW_DB_WALLEVEL_INDEX
,
TSDB_SHOW_DB_FSYNC_INDEX
,
TSDB_SHOW_DB_COMP_INDEX
,
TSDB_SHOW_DB_PRECISION_INDEX
,
TSDB_SHOW_DB_CACHELAST_INDEX
,
TSDB_SHOW_DB_PRECISION_INDEX
,
TSDB_SHOW_DB_UPDATE_INDEX
,
TSDB_SHOW_DB_STATUS_INDEX
,
TSDB_MAX_SHOW_DB
...
...
@@ -83,10 +84,10 @@ enum _show_tables_index {
TSDB_SHOW_TABLES_NAME_INDEX
,
TSDB_SHOW_TABLES_CREATED_TIME_INDEX
,
TSDB_SHOW_TABLES_COLUMNS_INDEX
,
TSDB_SHOW_TABLES_METRIC_INDEX
,
TSDB_SHOW_TABLES_UID_INDEX
,
TSDB_SHOW_TABLES_METRIC_INDEX
,
TSDB_SHOW_TABLES_UID_INDEX
,
TSDB_SHOW_TABLES_TID_INDEX
,
TSDB_SHOW_TABLES_VGID_INDEX
,
TSDB_SHOW_TABLES_VGID_INDEX
,
TSDB_MAX_SHOW_TABLES
};
...
...
@@ -134,6 +135,7 @@ typedef struct {
int8_t
wallevel
;
int32_t
fsync
;
int8_t
comp
;
int8_t
cachelast
;
char
precision
[
8
];
// time resolution
int8_t
update
;
char
status
[
16
];
...
...
@@ -360,19 +362,19 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
arguments
->
data_batch
=
atoi
(
arg
);
if
(
arguments
->
data_batch
>=
INT16_MAX
)
{
arguments
->
data_batch
=
INT16_MAX
-
1
;
}
}
break
;
case
'L'
:
case
'L'
:
{
int32_t
len
=
atoi
(
arg
);
if
(
len
>
TSDB_MAX_ALLOWED_SQL_LEN
)
{
len
=
TSDB_MAX_ALLOWED_SQL_LEN
;
}
else
if
(
len
<
TSDB_MAX_SQL_LEN
)
{
len
=
TSDB_MAX_SQL_LEN
;
}
}
arguments
->
max_sql_len
=
len
;
break
;
}
}
case
't'
:
arguments
->
table_batch
=
atoi
(
arg
);
break
;
...
...
@@ -415,12 +417,12 @@ static void taosStartDumpOutWorkThreads(void* taosCon, struct arguments* args, i
struct
arguments
g_args
=
{
// connection option
NULL
,
"root"
,
NULL
,
"root"
,
#ifdef _TD_POWER_
"powerdb"
,
"powerdb"
,
#else
"taosdata"
,
"taosdata"
,
#endif
0
,
""
,
...
...
@@ -677,10 +679,10 @@ int taosGetTableRecordInfo(char *table, STableRecordInfo *pTableRecordInfo, TAOS
}
sprintf
(
tempCommand
,
"show tables like %s"
,
table
);
result
=
taos_query
(
taosCon
,
tempCommand
);
result
=
taos_query
(
taosCon
,
tempCommand
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s
\n
"
,
tempCommand
);
free
(
tempCommand
);
...
...
@@ -707,12 +709,12 @@ int taosGetTableRecordInfo(char *table, STableRecordInfo *pTableRecordInfo, TAOS
free
(
tempCommand
);
return
0
;
}
sprintf
(
tempCommand
,
"show stables like %s"
,
table
);
result
=
taos_query
(
taosCon
,
tempCommand
);
result
=
taos_query
(
taosCon
,
tempCommand
);
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s
\n
"
,
tempCommand
);
free
(
tempCommand
);
...
...
@@ -750,7 +752,7 @@ int32_t taosSaveAllNormalTableToTempFile(TAOS *taosCon, char*meter, char* metric
return
-
1
;
}
}
memset
(
&
tableRecord
,
0
,
sizeof
(
STableRecord
));
tstrncpy
(
tableRecord
.
name
,
meter
,
TSDB_TABLE_NAME_LEN
);
tstrncpy
(
tableRecord
.
metric
,
metric
,
TSDB_TABLE_NAME_LEN
);
...
...
@@ -772,7 +774,7 @@ int32_t taosSaveTableOfMetricToTempFile(TAOS *taosCon, char* metric, struct argu
}
sprintf
(
tmpCommand
,
"select tbname from %s"
,
metric
);
TAOS_RES
*
res
=
taos_query
(
taosCon
,
tmpCommand
);
int32_t
code
=
taos_errno
(
res
);
if
(
code
!=
0
)
{
...
...
@@ -794,20 +796,20 @@ int32_t taosSaveTableOfMetricToTempFile(TAOS *taosCon, char* metric, struct argu
}
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
res
);
int32_t
numOfTable
=
0
;
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
memset
(
&
tableRecord
,
0
,
sizeof
(
STableRecord
));
tstrncpy
(
tableRecord
.
name
,
(
char
*
)
row
[
0
],
fields
[
0
].
bytes
);
tstrncpy
(
tableRecord
.
metric
,
metric
,
TSDB_TABLE_NAME_LEN
);
taosWrite
(
fd
,
&
tableRecord
,
sizeof
(
STableRecord
));
taosWrite
(
fd
,
&
tableRecord
,
sizeof
(
STableRecord
));
numOfTable
++
;
}
taos_free_result
(
res
);
lseek
(
fd
,
0
,
SEEK_SET
);
int
maxThreads
=
arguments
->
thread_num
;
int
tableOfPerFile
;
if
(
numOfTable
<=
arguments
->
thread_num
)
{
...
...
@@ -817,16 +819,16 @@ int32_t taosSaveTableOfMetricToTempFile(TAOS *taosCon, char* metric, struct argu
tableOfPerFile
=
numOfTable
/
arguments
->
thread_num
;
if
(
0
!=
numOfTable
%
arguments
->
thread_num
)
{
tableOfPerFile
+=
1
;
}
}
}
char
*
tblBuf
=
(
char
*
)
calloc
(
1
,
tableOfPerFile
*
sizeof
(
STableRecord
));
if
(
NULL
==
tblBuf
){
fprintf
(
stderr
,
"failed to calloc %"
PRIzu
"
\n
"
,
tableOfPerFile
*
sizeof
(
STableRecord
));
fprintf
(
stderr
,
"failed to calloc %"
PRIzu
"
\n
"
,
tableOfPerFile
*
sizeof
(
STableRecord
));
close
(
fd
);
return
-
1
;
}
int32_t
numOfThread
=
*
totalNumOfThread
;
int
subFd
=
-
1
;
for
(;
numOfThread
<
maxThreads
;
numOfThread
++
)
{
...
...
@@ -840,7 +842,7 @@ int32_t taosSaveTableOfMetricToTempFile(TAOS *taosCon, char* metric, struct argu
(
void
)
remove
(
tmpBuf
);
}
sprintf
(
tmpBuf
,
".select-tbname.tmp"
);
(
void
)
remove
(
tmpBuf
);
(
void
)
remove
(
tmpBuf
);
free
(
tblBuf
);
close
(
fd
);
return
-
1
;
...
...
@@ -858,11 +860,11 @@ int32_t taosSaveTableOfMetricToTempFile(TAOS *taosCon, char* metric, struct argu
sprintf
(
tmpBuf
,
".select-tbname.tmp"
);
(
void
)
remove
(
tmpBuf
);
if
(
fd
>=
0
)
{
close
(
fd
);
fd
=
-
1
;
}
}
*
totalNumOfThread
=
numOfThread
;
...
...
@@ -886,7 +888,7 @@ int taosDumpOut(struct arguments *arguments) {
}
else
{
sprintf
(
tmpBuf
,
"dbs.sql"
);
}
fp
=
fopen
(
tmpBuf
,
"w"
);
if
(
fp
==
NULL
)
{
fprintf
(
stderr
,
"failed to open file %s
\n
"
,
tmpBuf
);
...
...
@@ -918,9 +920,9 @@ int taosDumpOut(struct arguments *arguments) {
taosDumpCharset
(
fp
);
sprintf
(
command
,
"show databases"
);
result
=
taos_query
(
taos
,
command
);
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command: %s, reason: %s
\n
"
,
command
,
taos_errstr
(
result
));
goto
_exit_failure
;
...
...
@@ -960,12 +962,12 @@ int taosDumpOut(struct arguments *arguments) {
strncpy
(
dbInfos
[
count
]
->
name
,
(
char
*
)
row
[
TSDB_SHOW_DB_NAME_INDEX
],
fields
[
TSDB_SHOW_DB_NAME_INDEX
].
bytes
);
if
(
arguments
->
with_property
)
{
dbInfos
[
count
]
->
ntables
=
*
((
int32_t
*
)
row
[
TSDB_SHOW_DB_NTABLES_INDEX
]);
dbInfos
[
count
]
->
vgroups
=
*
((
int32_t
*
)
row
[
TSDB_SHOW_DB_VGROUPS_INDEX
]);
dbInfos
[
count
]
->
vgroups
=
*
((
int32_t
*
)
row
[
TSDB_SHOW_DB_VGROUPS_INDEX
]);
dbInfos
[
count
]
->
replica
=
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_REPLICA_INDEX
]);
dbInfos
[
count
]
->
quorum
=
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_QUORUM_INDEX
]);
dbInfos
[
count
]
->
days
=
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_DAYS_INDEX
]);
dbInfos
[
count
]
->
days
=
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_DAYS_INDEX
]);
strncpy
(
dbInfos
[
count
]
->
keeplist
,
(
char
*
)
row
[
TSDB_SHOW_DB_KEEP_INDEX
],
fields
[
TSDB_SHOW_DB_KEEP_INDEX
].
bytes
);
strncpy
(
dbInfos
[
count
]
->
keeplist
,
(
char
*
)
row
[
TSDB_SHOW_DB_KEEP_INDEX
],
fields
[
TSDB_SHOW_DB_KEEP_INDEX
].
bytes
);
//dbInfos[count]->daysToKeep = *((int16_t *)row[TSDB_SHOW_DB_KEEP_INDEX]);
//dbInfos[count]->daysToKeep1;
//dbInfos[count]->daysToKeep2;
...
...
@@ -976,8 +978,9 @@ int taosDumpOut(struct arguments *arguments) {
dbInfos
[
count
]
->
wallevel
=
*
((
int8_t
*
)
row
[
TSDB_SHOW_DB_WALLEVEL_INDEX
]);
dbInfos
[
count
]
->
fsync
=
*
((
int32_t
*
)
row
[
TSDB_SHOW_DB_FSYNC_INDEX
]);
dbInfos
[
count
]
->
comp
=
(
int8_t
)(
*
((
int8_t
*
)
row
[
TSDB_SHOW_DB_COMP_INDEX
]));
dbInfos
[
count
]
->
cachelast
=
(
int8_t
)(
*
((
int8_t
*
)
row
[
TSDB_SHOW_DB_CACHELAST_INDEX
]));
strncpy
(
dbInfos
[
count
]
->
precision
,
(
char
*
)
row
[
TSDB_SHOW_DB_PRECISION_INDEX
],
fields
[
TSDB_SHOW_DB_PRECISION_INDEX
].
bytes
);
strncpy
(
dbInfos
[
count
]
->
precision
,
(
char
*
)
row
[
TSDB_SHOW_DB_PRECISION_INDEX
],
fields
[
TSDB_SHOW_DB_PRECISION_INDEX
].
bytes
);
//dbInfos[count]->precision = *((int8_t *)row[TSDB_SHOW_DB_PRECISION_INDEX]);
dbInfos
[
count
]
->
update
=
*
((
int8_t
*
)
row
[
TSDB_SHOW_DB_UPDATE_INDEX
]);
}
...
...
@@ -1009,8 +1012,8 @@ int taosDumpOut(struct arguments *arguments) {
g_resultStatistics
.
totalDatabasesOfDumpOut
++
;
sprintf
(
command
,
"use %s"
,
dbInfos
[
0
]
->
name
);
result
=
taos_query
(
taos
,
command
);
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"invalid database %s
\n
"
,
dbInfos
[
0
]
->
name
);
...
...
@@ -1040,7 +1043,7 @@ int taosDumpOut(struct arguments *arguments) {
int
ret
=
taosDumpStable
(
tableRecordInfo
.
tableRecord
.
metric
,
fp
,
taos
,
dbInfos
[
0
]
->
name
);
if
(
0
==
ret
)
{
superTblCnt
++
;
}
}
}
retCode
=
taosSaveAllNormalTableToTempFile
(
taos
,
tableRecordInfo
.
tableRecord
.
name
,
tableRecordInfo
.
tableRecord
.
metric
,
&
normalTblFd
);
}
...
...
@@ -1052,7 +1055,7 @@ int taosDumpOut(struct arguments *arguments) {
goto
_clean_tmp_file
;
}
}
// TODO: save dump super table <superTblCnt> into result_output.txt
fprintf
(
g_fpOfResult
,
"# super table counter: %d
\n
"
,
superTblCnt
);
g_resultStatistics
.
totalSuperTblsOfDumpOut
+=
superTblCnt
;
...
...
@@ -1078,7 +1081,7 @@ int taosDumpOut(struct arguments *arguments) {
taos_close
(
taos
);
taos_free_result
(
result
);
tfree
(
command
);
taosFreeDbInfos
();
taosFreeDbInfos
();
fprintf
(
stderr
,
"dump out rows: %"
PRId64
"
\n
"
,
totalDumpOutRows
);
return
0
;
...
...
@@ -1099,8 +1102,8 @@ int taosGetTableDes(char* dbName, char *table, STableDef *tableDes, TAOS* taosCo
char
sqlstr
[
COMMAND_SIZE
];
sprintf
(
sqlstr
,
"describe %s.%s;"
,
dbName
,
table
);
res
=
taos_query
(
taosCon
,
sqlstr
);
res
=
taos_query
(
taosCon
,
sqlstr
);
int32_t
code
=
taos_errno
(
res
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command <%s>, reason:%s
\n
"
,
sqlstr
,
taos_errstr
(
res
));
...
...
@@ -1130,23 +1133,23 @@ int taosGetTableDes(char* dbName, char *table, STableDef *tableDes, TAOS* taosCo
if
(
isSuperTable
)
{
return
count
;
}
// if chidl-table have tag, using select tagName from table to get tagValue
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
strcmp
(
tableDes
->
cols
[
i
].
note
,
"TAG"
)
!=
0
)
continue
;
sprintf
(
sqlstr
,
"select %s from %s.%s"
,
tableDes
->
cols
[
i
].
field
,
dbName
,
table
);
res
=
taos_query
(
taosCon
,
sqlstr
);
res
=
taos_query
(
taosCon
,
sqlstr
);
code
=
taos_errno
(
res
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command <%s>, reason:%s
\n
"
,
sqlstr
,
taos_errstr
(
res
));
taos_free_result
(
res
);
return
-
1
;
}
fields
=
taos_fetch_fields
(
res
);
fields
=
taos_fetch_fields
(
res
);
row
=
taos_fetch_row
(
res
);
if
(
NULL
==
row
)
{
...
...
@@ -1161,7 +1164,7 @@ int taosGetTableDes(char* dbName, char *table, STableDef *tableDes, TAOS* taosCo
res
=
NULL
;
continue
;
}
int32_t
*
length
=
taos_fetch_lengths
(
res
);
//int32_t* length = taos_fetch_lengths(tmpResult);
...
...
@@ -1198,7 +1201,7 @@ int taosGetTableDes(char* dbName, char *table, STableDef *tableDes, TAOS* taosCo
}
case
TSDB_DATA_TYPE_NCHAR
:
{
memset
(
tableDes
->
cols
[
i
].
note
,
0
,
sizeof
(
tableDes
->
cols
[
i
].
note
));
char
tbuf
[
COL_NOTE_LEN
-
2
];
// need reserve 2 bytes for ' '
char
tbuf
[
COL_NOTE_LEN
-
2
];
// need reserve 2 bytes for ' '
convertNCharToReadable
((
char
*
)
row
[
0
],
length
[
0
],
tbuf
,
COL_NOTE_LEN
);
sprintf
(
tableDes
->
cols
[
i
].
note
,
"
\'
%s
\'
"
,
tbuf
);
break
;
...
...
@@ -1221,9 +1224,9 @@ int taosGetTableDes(char* dbName, char *table, STableDef *tableDes, TAOS* taosCo
default:
break
;
}
taos_free_result
(
res
);
res
=
NULL
;
res
=
NULL
;
}
return
count
;
...
...
@@ -1282,9 +1285,10 @@ void taosDumpCreateDbClause(SDbInfo *dbInfo, bool isDumpProperty, FILE *fp) {
pstr
+=
sprintf
(
pstr
,
"CREATE DATABASE IF NOT EXISTS %s "
,
dbInfo
->
name
);
if
(
isDumpProperty
)
{
pstr
+=
sprintf
(
pstr
,
"TABLES %d VGROUPS %d REPLICA %d QUORUM %d DAYS %d KEEP %s CACHE %d BLOCKS %d MINROWS %d MAXROWS %d WALLEVEL %d FYNC %d COMP %d PRECISION '%s' UPDATE %d"
,
dbInfo
->
ntables
,
dbInfo
->
vgroups
,
dbInfo
->
replica
,
dbInfo
->
quorum
,
dbInfo
->
days
,
dbInfo
->
keeplist
,
dbInfo
->
cache
,
dbInfo
->
blocks
,
dbInfo
->
minrows
,
dbInfo
->
maxrows
,
dbInfo
->
wallevel
,
dbInfo
->
fsync
,
dbInfo
->
comp
,
dbInfo
->
precision
,
dbInfo
->
update
);
"REPLICA %d QUORUM %d DAYS %d KEEP %s CACHE %d BLOCKS %d MINROWS %d MAXROWS %d FSYNC %d CACHELAST %d COMP %d PRECISION '%s' UPDATE %d"
,
dbInfo
->
replica
,
dbInfo
->
quorum
,
dbInfo
->
days
,
dbInfo
->
keeplist
,
dbInfo
->
cache
,
dbInfo
->
blocks
,
dbInfo
->
minrows
,
dbInfo
->
maxrows
,
dbInfo
->
fsync
,
dbInfo
->
cachelast
,
dbInfo
->
comp
,
dbInfo
->
precision
,
dbInfo
->
update
);
}
pstr
+=
sprintf
(
pstr
,
";"
);
...
...
@@ -1295,8 +1299,8 @@ void* taosDumpOutWorkThreadFp(void *arg)
{
SThreadParaObj
*
pThread
=
(
SThreadParaObj
*
)
arg
;
STableRecord
tableRecord
;
int
fd
;
int
fd
;
char
tmpBuf
[
TSDB_FILENAME_LEN
*
4
]
=
{
0
};
sprintf
(
tmpBuf
,
".tables.tmp.%d"
,
pThread
->
threadIndex
);
fd
=
open
(
tmpBuf
,
O_RDWR
|
O_CREAT
,
S_IRWXU
|
S_IRGRP
|
S_IXGRP
|
S_IROTH
);
...
...
@@ -1307,13 +1311,13 @@ void* taosDumpOutWorkThreadFp(void *arg)
FILE
*
fp
=
NULL
;
memset
(
tmpBuf
,
0
,
TSDB_FILENAME_LEN
+
128
);
if
(
g_args
.
outpath
[
0
]
!=
0
)
{
sprintf
(
tmpBuf
,
"%s/%s.tables.%d.sql"
,
g_args
.
outpath
,
pThread
->
dbName
,
pThread
->
threadIndex
);
}
else
{
sprintf
(
tmpBuf
,
"%s.tables.%d.sql"
,
pThread
->
dbName
,
pThread
->
threadIndex
);
}
fp
=
fopen
(
tmpBuf
,
"w"
);
if
(
fp
==
NULL
)
{
fprintf
(
stderr
,
"failed to open file %s
\n
"
,
tmpBuf
);
...
...
@@ -1323,13 +1327,13 @@ void* taosDumpOutWorkThreadFp(void *arg)
memset
(
tmpBuf
,
0
,
TSDB_FILENAME_LEN
);
sprintf
(
tmpBuf
,
"use %s"
,
pThread
->
dbName
);
TAOS_RES
*
tmpResult
=
taos_query
(
pThread
->
taosCon
,
tmpBuf
);
TAOS_RES
*
tmpResult
=
taos_query
(
pThread
->
taosCon
,
tmpBuf
);
int32_t
code
=
taos_errno
(
tmpResult
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"invalid database %s
\n
"
,
pThread
->
dbName
);
taos_free_result
(
tmpResult
);
fclose
(
fp
);
fclose
(
fp
);
close
(
fd
);
return
NULL
;
}
...
...
@@ -1347,7 +1351,7 @@ void* taosDumpOutWorkThreadFp(void *arg)
// TODO: sum table count and table rows by self
pThread
->
tablesOfDumpOut
++
;
pThread
->
rowsOfDumpOut
+=
ret
;
if
(
pThread
->
rowsOfDumpOut
>=
lastRowsPrint
)
{
printf
(
" %"
PRId64
" rows already be dumpout from database %s
\n
"
,
pThread
->
rowsOfDumpOut
,
pThread
->
dbName
);
lastRowsPrint
+=
5000000
;
...
...
@@ -1357,15 +1361,15 @@ void* taosDumpOutWorkThreadFp(void *arg)
if
(
tablesInOneFile
>=
g_args
.
table_batch
)
{
fclose
(
fp
);
tablesInOneFile
=
0
;
memset
(
tmpBuf
,
0
,
TSDB_FILENAME_LEN
+
128
);
memset
(
tmpBuf
,
0
,
TSDB_FILENAME_LEN
+
128
);
if
(
g_args
.
outpath
[
0
]
!=
0
)
{
sprintf
(
tmpBuf
,
"%s/%s.tables.%d-%d.sql"
,
g_args
.
outpath
,
pThread
->
dbName
,
pThread
->
threadIndex
,
fileNameIndex
);
}
else
{
sprintf
(
tmpBuf
,
"%s.tables.%d-%d.sql"
,
pThread
->
dbName
,
pThread
->
threadIndex
,
fileNameIndex
);
}
fileNameIndex
++
;
fp
=
fopen
(
tmpBuf
,
"w"
);
if
(
fp
==
NULL
)
{
fprintf
(
stderr
,
"failed to open file %s
\n
"
,
tmpBuf
);
...
...
@@ -1379,7 +1383,7 @@ void* taosDumpOutWorkThreadFp(void *arg)
taos_free_result
(
tmpResult
);
close
(
fd
);
fclose
(
fp
);
fclose
(
fp
);
return
NULL
;
}
...
...
@@ -1395,7 +1399,7 @@ static void taosStartDumpOutWorkThreads(void* taosCon, struct arguments* args, i
pThread
->
threadIndex
=
t
;
pThread
->
totalThreads
=
numOfThread
;
tstrncpy
(
pThread
->
dbName
,
dbName
,
TSDB_TABLE_NAME_LEN
);
pThread
->
taosCon
=
taosCon
;
pThread
->
taosCon
=
taosCon
;
pthread_attr_init
(
&
thattr
);
pthread_attr_setdetachstate
(
&
thattr
,
PTHREAD_CREATE_JOINABLE
);
...
...
@@ -1410,7 +1414,7 @@ static void taosStartDumpOutWorkThreads(void* taosCon, struct arguments* args, i
pthread_join
(
threadObj
[
t
].
threadID
,
NULL
);
}
// TODO: sum all thread dump table count and rows of per table, then save into result_output.txt
// TODO: sum all thread dump table count and rows of per table, then save into result_output.txt
int64_t
totalRowsOfDumpOut
=
0
;
int64_t
totalChildTblsOfDumpOut
=
0
;
for
(
int32_t
t
=
0
;
t
<
numOfThread
;
++
t
)
{
...
...
@@ -1451,7 +1455,7 @@ int32_t taosDumpStable(char *table, FILE *fp, TAOS* taosCon, char* dbName) {
}
int32_t
taosDumpCreateSuperTableClause
(
TAOS
*
taosCon
,
char
*
dbName
,
FILE
*
fp
)
int32_t
taosDumpCreateSuperTableClause
(
TAOS
*
taosCon
,
char
*
dbName
,
FILE
*
fp
)
{
TAOS_ROW
row
;
int
fd
=
-
1
;
...
...
@@ -1459,8 +1463,8 @@ int32_t taosDumpCreateSuperTableClause(TAOS* taosCon, char* dbName, FILE *fp)
char
sqlstr
[
TSDB_MAX_SQL_LEN
]
=
{
0
};
sprintf
(
sqlstr
,
"show %s.stables"
,
dbName
);
TAOS_RES
*
res
=
taos_query
(
taosCon
,
sqlstr
);
TAOS_RES
*
res
=
taos_query
(
taosCon
,
sqlstr
);
int32_t
code
=
taos_errno
(
res
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command <%s>, reason: %s
\n
"
,
sqlstr
,
taos_errstr
(
res
));
...
...
@@ -1480,13 +1484,13 @@ int32_t taosDumpCreateSuperTableClause(TAOS* taosCon, char* dbName, FILE *fp)
(
void
)
remove
(
".stables.tmp"
);
exit
(
-
1
);
}
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
memset
(
&
tableRecord
,
0
,
sizeof
(
STableRecord
));
strncpy
(
tableRecord
.
name
,
(
char
*
)
row
[
TSDB_SHOW_TABLES_NAME_INDEX
],
fields
[
TSDB_SHOW_TABLES_NAME_INDEX
].
bytes
);
taosWrite
(
fd
,
&
tableRecord
,
sizeof
(
STableRecord
));
}
}
taos_free_result
(
res
);
(
void
)
lseek
(
fd
,
0
,
SEEK_SET
);
...
...
@@ -1494,7 +1498,7 @@ int32_t taosDumpCreateSuperTableClause(TAOS* taosCon, char* dbName, FILE *fp)
while
(
1
)
{
ssize_t
readLen
=
read
(
fd
,
&
tableRecord
,
sizeof
(
STableRecord
));
if
(
readLen
<=
0
)
break
;
int
ret
=
taosDumpStable
(
tableRecord
.
name
,
fp
,
taosCon
,
dbName
);
if
(
0
==
ret
)
{
superTblCnt
++
;
...
...
@@ -1507,8 +1511,8 @@ int32_t taosDumpCreateSuperTableClause(TAOS* taosCon, char* dbName, FILE *fp)
close
(
fd
);
(
void
)
remove
(
".stables.tmp"
);
return
0
;
return
0
;
}
...
...
@@ -1518,19 +1522,19 @@ int taosDumpDb(SDbInfo *dbInfo, struct arguments *arguments, FILE *fp, TAOS *tao
STableRecord
tableRecord
;
taosDumpCreateDbClause
(
dbInfo
,
arguments
->
with_property
,
fp
);
fprintf
(
g_fpOfResult
,
"
\n
#### database: %s
\n
"
,
dbInfo
->
name
);
g_resultStatistics
.
totalDatabasesOfDumpOut
++
;
char
sqlstr
[
TSDB_MAX_SQL_LEN
]
=
{
0
};
fprintf
(
fp
,
"USE %s;
\n\n
"
,
dbInfo
->
name
);
(
void
)
taosDumpCreateSuperTableClause
(
taosCon
,
dbInfo
->
name
,
fp
);
sprintf
(
sqlstr
,
"show %s.tables"
,
dbInfo
->
name
);
TAOS_RES
*
res
=
taos_query
(
taosCon
,
sqlstr
);
TAOS_RES
*
res
=
taos_query
(
taosCon
,
sqlstr
);
int
code
=
taos_errno
(
res
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command <%s>, reason:%s
\n
"
,
sqlstr
,
taos_errstr
(
res
));
...
...
@@ -1549,15 +1553,15 @@ int taosDumpDb(SDbInfo *dbInfo, struct arguments *arguments, FILE *fp, TAOS *tao
}
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
res
);
int32_t
numOfTable
=
0
;
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
memset
(
&
tableRecord
,
0
,
sizeof
(
STableRecord
));
tstrncpy
(
tableRecord
.
name
,
(
char
*
)
row
[
TSDB_SHOW_TABLES_NAME_INDEX
],
fields
[
TSDB_SHOW_TABLES_NAME_INDEX
].
bytes
);
tstrncpy
(
tableRecord
.
metric
,
(
char
*
)
row
[
TSDB_SHOW_TABLES_METRIC_INDEX
],
fields
[
TSDB_SHOW_TABLES_METRIC_INDEX
].
bytes
);
taosWrite
(
fd
,
&
tableRecord
,
sizeof
(
STableRecord
));
numOfTable
++
;
}
taos_free_result
(
res
);
...
...
@@ -1572,7 +1576,7 @@ int taosDumpDb(SDbInfo *dbInfo, struct arguments *arguments, FILE *fp, TAOS *tao
tableOfPerFile
=
numOfTable
/
g_args
.
thread_num
;
if
(
0
!=
numOfTable
%
g_args
.
thread_num
)
{
tableOfPerFile
+=
1
;
}
}
}
char
*
tblBuf
=
(
char
*
)
calloc
(
1
,
tableOfPerFile
*
sizeof
(
STableRecord
));
...
...
@@ -1581,7 +1585,7 @@ int taosDumpDb(SDbInfo *dbInfo, struct arguments *arguments, FILE *fp, TAOS *tao
close
(
fd
);
return
-
1
;
}
int32_t
numOfThread
=
0
;
int
subFd
=
-
1
;
for
(
numOfThread
=
0
;
numOfThread
<
maxThreads
;
numOfThread
++
)
{
...
...
@@ -1618,7 +1622,7 @@ int taosDumpDb(SDbInfo *dbInfo, struct arguments *arguments, FILE *fp, TAOS *tao
close
(
fd
);
fd
=
-
1
;
}
taos_free_result
(
res
);
// start multi threads to dumpout
...
...
@@ -1626,7 +1630,7 @@ int taosDumpDb(SDbInfo *dbInfo, struct arguments *arguments, FILE *fp, TAOS *tao
for
(
int
loopCnt
=
0
;
loopCnt
<
numOfThread
;
loopCnt
++
)
{
sprintf
(
tmpBuf
,
".tables.tmp.%d"
,
loopCnt
);
(
void
)
remove
(
tmpBuf
);
}
}
free
(
tblBuf
);
return
0
;
...
...
@@ -1737,7 +1741,7 @@ int taosDumpTableData(FILE *fp, char *tbname, struct arguments *arguments, TAOS*
char
*
pstr
=
NULL
;
TAOS_ROW
row
=
NULL
;
int
numFields
=
0
;
if
(
arguments
->
schemaonly
)
{
return
0
;
}
...
...
@@ -1752,11 +1756,11 @@ int taosDumpTableData(FILE *fp, char *tbname, struct arguments *arguments, TAOS*
pstr
=
tmpBuffer
;
char
sqlstr
[
1024
]
=
{
0
};
sprintf
(
sqlstr
,
"select * from %s.%s where _c0 >= %"
PRId64
" and _c0 <= %"
PRId64
" order by _c0 asc;"
,
sprintf
(
sqlstr
,
"select * from %s.%s where _c0 >= %"
PRId64
" and _c0 <= %"
PRId64
" order by _c0 asc;"
,
dbName
,
tbname
,
arguments
->
start_time
,
arguments
->
end_time
);
TAOS_RES
*
tmpResult
=
taos_query
(
taosCon
,
sqlstr
);
TAOS_RES
*
tmpResult
=
taos_query
(
taosCon
,
sqlstr
);
int32_t
code
=
taos_errno
(
tmpResult
);
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s, reason: %s
\n
"
,
sqlstr
,
taos_errstr
(
tmpResult
));
...
...
@@ -1776,7 +1780,7 @@ int taosDumpTableData(FILE *fp, char *tbname, struct arguments *arguments, TAOS*
while
((
row
=
taos_fetch_row
(
tmpResult
))
!=
NULL
)
{
pstr
=
tmpBuffer
;
curr_sqlstr_len
=
0
;
int32_t
*
length
=
taos_fetch_lengths
(
tmpResult
);
// act len
if
(
count
==
0
)
{
...
...
@@ -1831,7 +1835,7 @@ int taosDumpTableData(FILE *fp, char *tbname, struct arguments *arguments, TAOS*
converStringToReadable
((
char
*
)
row
[
col
],
length
[
col
],
tbuf
,
COMMAND_SIZE
);
//pstr = stpcpy(pstr, tbuf);
//*(pstr++) = '\'';
pstr
+=
sprintf
(
pstr
+
curr_sqlstr_len
,
"
\'
%s
\'
"
,
tbuf
);
pstr
+=
sprintf
(
pstr
+
curr_sqlstr_len
,
"
\'
%s
\'
"
,
tbuf
);
break
;
}
case
TSDB_DATA_TYPE_NCHAR
:
{
...
...
@@ -1859,10 +1863,10 @@ int taosDumpTableData(FILE *fp, char *tbname, struct arguments *arguments, TAOS*
curr_sqlstr_len
+=
sprintf
(
pstr
+
curr_sqlstr_len
,
") "
);
totalRows
++
;
totalRows
++
;
count
++
;
fprintf
(
fp
,
"%s"
,
tmpBuffer
);
if
(
totalRows
>=
lastRowsPrint
)
{
printf
(
" %"
PRId64
" rows already be dumpout from %s.%s
\n
"
,
totalRows
,
dbName
,
tbname
);
lastRowsPrint
+=
5000000
;
...
...
@@ -2208,7 +2212,7 @@ static FILE* taosOpenDumpInFile(char *fptr) {
}
char
*
fname
=
full_path
.
we_wordv
[
0
];
FILE
*
f
=
fopen
(
fname
,
"r"
);
if
(
f
==
NULL
)
{
fprintf
(
stderr
,
"ERROR: failed to open file %s
\n
"
,
fname
);
...
...
@@ -2242,7 +2246,7 @@ int taosDumpInOneFile(TAOS * taos, FILE* fp, char* fcharset, char* encode, c
line
[
--
read_len
]
=
'\0'
;
//if (read_len == 0 || isCommentLine(line)) { // line starts with #
if
(
read_len
==
0
)
{
if
(
read_len
==
0
)
{
continue
;
}
...
...
@@ -2261,8 +2265,8 @@ int taosDumpInOneFile(TAOS * taos, FILE* fp, char* fcharset, char* encode, c
}
memset
(
cmd
,
0
,
TSDB_MAX_ALLOWED_SQL_LEN
);
cmd_len
=
0
;
cmd_len
=
0
;
if
(
lineNo
>=
lastRowsPrint
)
{
printf
(
" %d lines already be executed from file %s
\n
"
,
lineNo
,
fileName
);
lastRowsPrint
+=
5000000
;
...
...
@@ -2302,7 +2306,7 @@ static void taosStartDumpInWorkThreads(void* taosCon, struct arguments *args)
if
(
totalThreads
>
tsSqlFileNum
)
{
totalThreads
=
tsSqlFileNum
;
}
SThreadParaObj
*
threadObj
=
(
SThreadParaObj
*
)
calloc
(
totalThreads
,
sizeof
(
SThreadParaObj
));
for
(
int32_t
t
=
0
;
t
<
totalThreads
;
++
t
)
{
pThread
=
threadObj
+
t
;
...
...
@@ -2332,7 +2336,7 @@ static void taosStartDumpInWorkThreads(void* taosCon, struct arguments *args)
int
taosDumpIn
(
struct
arguments
*
arguments
)
{
assert
(
arguments
->
isDumpIn
);
TAOS
*
taos
=
NULL
;
FILE
*
fp
=
NULL
;
...
...
@@ -2347,22 +2351,22 @@ int taosDumpIn(struct arguments *arguments) {
int32_t
tsSqlFileNumOfTbls
=
tsSqlFileNum
;
if
(
tsDbSqlFile
[
0
]
!=
0
)
{
tsSqlFileNumOfTbls
--
;
fp
=
taosOpenDumpInFile
(
tsDbSqlFile
);
if
(
NULL
==
fp
)
{
fprintf
(
stderr
,
"failed to open input file %s
\n
"
,
tsDbSqlFile
);
return
-
1
;
}
fprintf
(
stderr
,
"Success Open input file: %s
\n
"
,
tsDbSqlFile
);
taosLoadFileCharset
(
fp
,
tsfCharset
);
taosDumpInOneFile
(
taos
,
fp
,
tsfCharset
,
arguments
->
encode
,
tsDbSqlFile
);
}
if
(
0
!=
tsSqlFileNumOfTbls
)
{
taosStartDumpInWorkThreads
(
taos
,
arguments
);
}
}
taos_close
(
taos
);
taosFreeSQLFiles
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录