Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
Practical-Cryptdb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Zhaozhen
Practical-Cryptdb
Commits
9c3abfb5
Commit
9c3abfb5
authored
Jun 09, 2017
by
casualet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
able to analysis all tables in a database
parent
adbbc18b
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
92 additions
and
1 deletion
+92
-1
Makefile
packages/tls/mysqlWrapper/Makefile
+4
-1
backFieldsToFiles.cc
packages/tls/mysqlWrapper/backFieldsToFiles.cc
+88
-0
No files found.
packages/tls/mysqlWrapper/Makefile
View file @
9c3abfb5
...
@@ -7,13 +7,16 @@ CXX=g++
...
@@ -7,13 +7,16 @@ CXX=g++
.PHONY
:
all
.PHONY
:
all
all
:
main createSelect
all
:
main createSelect
backFieldsToFiles
createSelect
:
obj/createSelect.o $(OBJFILES)
createSelect
:
obj/createSelect.o $(OBJFILES)
$(CXX)
-o
createSelect
$^
$(LDFLAGS)
$(CXX)
-o
createSelect
$^
$(LDFLAGS)
main
:
obj/main.o $(OBJFILES)
main
:
obj/main.o $(OBJFILES)
$(CXX)
-o
main
$^
$(LDFLAGS)
$(CXX)
-o
main
$^
$(LDFLAGS)
backFieldsToFiles
:
obj/backFieldsToFiles.o $(OBJFILES)
$(CXX)
-o
backFieldsToFiles
$^
$(LDFLAGS)
.PHONY
:
clean
.PHONY
:
clean
...
...
packages/tls/mysqlWrapper/backFieldsToFiles.cc
0 → 100644
View file @
9c3abfb5
#include <iostream>
#include <stdlib.h>
#include "mysqllib/utilities.h"
#include "mysqllib/MyConnect.h"
#include <vector>
#include <string>
using
namespace
std
;
extern
Connect
*
con
;
string
createSelect
(
string
database
,
string
table
,
bool
isQuote
=
true
){
auto
dbresult
=
con
->
execute
(
string
(
"SELECT * FROM `"
)
+
database
+
"`.`"
+
string
(
table
)
+
"` LIMIT 1;"
);
DBResult
*
result
=
dbresult
.
get
();
vector
<
vector
<
string
>>
rows
=
result
->
getRows
();
vector
<
enum_field_types
>
types
=
result
->
getTypes
();
vector
<
string
>
fields
=
result
->
getFields
();
string
head
=
"SELECT "
;
for
(
int
i
=
0
;
i
<
types
.
size
();
i
++
){
if
(
IS_NUM
(
types
[
i
])){
head
+=
fields
[
i
]
+
","
;
}
else
{
if
(
isQuote
)
head
+=
string
(
"QUOTE("
)
+
fields
[
i
]
+
") AS quo"
+
fields
[
i
]
+
" ,"
;
else
head
+=
string
(
"HEX("
)
+
fields
[
i
]
+
") AS hex"
+
fields
[
i
]
+
" ,"
;
}
}
head
[
head
.
size
()
-
1
]
=
' '
;
head
+=
"FROM `"
+
database
+
"`.`"
+
table
+
"`"
;
return
head
;
}
void
backupselect
(
string
query
,
string
prefix
){
system
((
string
(
"rm -rf "
)
+
prefix
).
c_str
());
system
((
string
(
"mkdir -p "
)
+
prefix
).
c_str
());
auto
dbresult
=
con
->
execute
(
query
);
DBResult
*
result
=
dbresult
.
get
();
vector
<
vector
<
string
>>
rows
=
result
->
getRows
();
vector
<
enum_field_types
>
types
=
result
->
getTypes
();
vector
<
string
>
fields
=
result
->
getFields
();
int
len
=
fields
.
size
();
vector
<
FILE
*>
files
(
len
,
NULL
);
for
(
int
i
=
0
;
i
<
fields
.
size
();
i
++
){
files
[
i
]
=
fopen
((
prefix
+
fields
[
i
]).
c_str
(),
"a"
);
}
for
(
auto
row
:
rows
){
for
(
int
i
=
0
;
i
<
row
.
size
();
i
++
){
fwrite
(
row
[
i
].
c_str
(),
1
,
row
[
i
].
size
(),
files
[
i
]);
fprintf
(
files
[
i
],
"
\n
"
);
}
}
for
(
int
i
=
0
;
i
<
fields
.
size
();
i
++
){
fclose
(
files
[
i
]);
}
}
vector
<
string
>
getTables
(
string
db
){
string
query
=
string
(
"SHOW TABLES IN "
)
+
db
;
auto
dbresult
=
con
->
execute
(
query
);
DBResult
*
result
=
dbresult
.
get
();
vector
<
vector
<
string
>>
rows
=
result
->
getRows
();
vector
<
enum_field_types
>
types
=
result
->
getTypes
();
vector
<
string
>
fieldNames
=
result
->
getFields
();
vector
<
string
>
res
;
for
(
auto
item
:
rows
){
assert
(
item
.
size
()
==
1
);
res
.
push_back
(
item
[
0
]);
}
return
res
;
}
int
main
(
int
argc
,
char
**
argv
){
system
(
"rm -rf allTables"
);
system
(
"mkdir allTables"
);
if
(
argc
!=
2
){
cout
<<
"db"
<<
endl
;
return
0
;
}
string
num
=
string
(
argv
[
1
]);
vector
<
string
>
tablesprefix
=
getTables
(
string
(
argv
[
1
]));
for
(
auto
item
:
tablesprefix
){
string
query
=
createSelect
(
string
(
argv
[
1
]),
item
);
backupselect
(
query
,
string
(
"allTables/"
)
+
item
+
"/"
);
}
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment