Skip to content

Commit 09d9ceb

Browse files
authored
Merge pull request #814 from aharqan/other
mysqldump to csv is implemented
2 parents c9db9e5 + ae65f64 commit 09d9ceb

File tree

4 files changed

+413
-0
lines changed

4 files changed

+413
-0
lines changed

mysqldump_to_csv/README.md

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
### Purpose ###
2+
This tool is really helpful to convert mysqldump files to csv, so these dump files are easily readable.
3+
4+
### How does it work ###
5+
You pass in a mysqldump file and a target directory where the csv will be stored in. Then a file will be created for each table and the corrolated values. An example is provided, to mysampledatabase.sql is the dump file and borders.csv is the produced csv file.
6+
7+
### How to use ###
8+
To used this script all you need is the python script, a mysqldump file, and a directory where you would want the csv files saved in. The following command is to show how to run the script:
9+
'python mysql_dump_to_csv.py mysqlsampledatabase.sql output_directory'
10+
11+
Add you directory in the place of "output_directory"
12+
13+
### Author ###
14+
Abdulaziz alharqan
15+
16+
17+
### References ###
18+
mysqldump file: http://smiffy.de/mondial/mysql-mondial.dmp

mysqldump_to_csv/borders.csv

+305
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
Country1,Country2,Length
2+
A,D,784
3+
A,H,366
4+
A,I,430
5+
AFG,IR,936
6+
AFG,PK,2430
7+
AFG,TJ,76
8+
AL,GR,282
9+
AL,YU,287
10+
AND,E,65
11+
AND,F,60
12+
ANG,ZRE,2511
13+
ARM,AZ,787
14+
ARM,GE,164
15+
ARM,IR,35
16+
ARM,TR,268
17+
AZ,IR,611
18+
AZ,R,284
19+
AZ,TR,9
20+
B,D,167
21+
B,F,620
22+
B,NL,450
23+
BD,IND,4053
24+
BD,MYA,193
25+
BEN,BF,306
26+
BEN,RN,266
27+
BEN,WAN,773
28+
BF,CI,584
29+
BF,RMM,1000
30+
BF,RN,628
31+
BG,GR,494
32+
BG,RO,608
33+
BG,TR,240
34+
BHT,IND,605
35+
BHT,TJ,470
36+
BI,EAT,451
37+
BI,ZRE,233
38+
BIH,HR,932
39+
BIH,YU,527
40+
BOL,BR,3400
41+
BOL,PE,900
42+
BOL,RA,832
43+
BRU,MAL,381
44+
BY,PL,605
45+
BY,R,959
46+
BY,UA,891
47+
BZ,GCA,266
48+
BZ,MEX,250
49+
C,USA,29
50+
CAM,RCA,797
51+
CAM,TCH,1094
52+
CAM,WAN,1690
53+
CH,A,164
54+
CH,D,334
55+
CH,F,573
56+
CH,I,740
57+
CI,RMM,532
58+
CO,BR,1643
59+
CO,PE,2900
60+
CR,NIC,309
61+
CR,PA,330
62+
CZ,A,362
63+
CZ,D,646
64+
CZ,PL,658
65+
D,F,451
66+
DJI,ER,113
67+
DJI,ETH,337
68+
DJI,SP,58
69+
DK,D,68
70+
E,F,623
71+
EAK,EAT,769
72+
EAK,ETH,830
73+
EAK,SP,682
74+
EAK,SUD,232
75+
EAU,EAK,933
76+
EAU,EAT,396
77+
EAU,SUD,435
78+
EAU,ZRE,765
79+
EC,CO,590
80+
EC,PE,1420
81+
ER,ETH,912
82+
ER,SUD,605
83+
ES,GCA,203
84+
ES,HCA,342
85+
ET,LAR,1150
86+
ET,SUD,1273
87+
ETH,SUD,1606
88+
EW,LV,267
89+
EW,R,290
90+
FGU,BR,673
91+
FGU,SME,510
92+
FL,A,37
93+
FL,CH,41
94+
G,CAM,298
95+
G,RCB,1903
96+
GCA,HCA,256
97+
GCA,MEX,962
98+
GE,AZ,322
99+
GE,R,723
100+
GE,TR,252
101+
GH,BF,548
102+
GH,CI,668
103+
GNB,RG,386
104+
GNB,SN,338
105+
GQ,CAM,189
106+
GQ,G,350
107+
GR,TR,206
108+
GUY,BR,1119
109+
GUY,YV,743
110+
H,RO,443
111+
H,UA,103
112+
H,YU,151
113+
HCA,NIC,922
114+
HR,H,329
115+
HR,YU,266
116+
I,F,488
117+
IL,ET,255
118+
IL,JOR,238
119+
IL,SYR,76
120+
IND,TJ,3380
121+
IRL,GB,360
122+
IRQ,IR,1458
123+
IRQ,SA,814
124+
IRQ,TR,331
125+
JOR,IRQ,181
126+
JOR,SA,728
127+
JOR,SYR,375
128+
K,LAO,541
129+
K,THA,803
130+
K,VN,1228
131+
KAZ,R,6846
132+
KAZ,TJ,1533
133+
KGZ,KAZ,1051
134+
KGZ,TJ,858
135+
KGZ,UZB,1099
136+
KWT,IRQ,242
137+
KWT,SA,222
138+
L,B,148
139+
L,D,138
140+
L,F,73
141+
LAO,MYA,235
142+
LAO,THA,1754
143+
LAO,TJ,423
144+
LAO,VN,2130
145+
LAR,DZ,982
146+
LAR,SUD,383
147+
LB,CI,716
148+
LB,RG,563
149+
LS,RSA,909
150+
LT,BY,502
151+
LT,PL,91
152+
LT,R,227
153+
LV,BY,141
154+
LV,LT,453
155+
LV,R,217
156+
MA,DZ,1559
157+
MAL,RI,1782
158+
MAL,THA,506
159+
MC,F,4
160+
MD,RO,450
161+
MD,UA,939
162+
MEX,USA,3326
163+
MK,AL,151
164+
MK,BG,148
165+
MK,GR,228
166+
MK,YU,221
167+
MNG,R,3441
168+
MNG,TJ,4673
169+
MOC,EAT,756
170+
MOC,RSA,491
171+
MW,EAT,475
172+
MW,MOC,1569
173+
MW,Z,837
174+
MYA,IND,1463
175+
MYA,TJ,2185
176+
N,R,167
177+
N,S,1619
178+
N,SF,729
179+
NAM,ANG,1376
180+
NAM,RSA,855
181+
NEP,IND,1690
182+
NEP,TJ,1236
183+
NL,D,577
184+
NOK,R,19
185+
NOK,TJ,1416
186+
OM,SA,676
187+
OM,YE,288
188+
P,E,1214
189+
PA,CO,225
190+
PE,BR,1560
191+
PK,IND,2912
192+
PK,IR,909
193+
PK,TJ,523
194+
PL,D,456
195+
PL,R,206
196+
PL,UA,428
197+
PNG,RI,820
198+
PY,BOL,750
199+
PY,BR,1290
200+
PY,RA,1880
201+
Q,SA,60
202+
RA,BR,1224
203+
RB,NAM,1360
204+
RB,RSA,1840
205+
RCA,SUD,1165
206+
RCA,TCH,1197
207+
RCA,ZRE,1577
208+
RCB,ANG,201
209+
RCB,CAM,523
210+
RCB,RCA,467
211+
RCB,ZRE,2410
212+
RCH,BOL,861
213+
RCH,PE,160
214+
RCH,RA,5150
215+
RG,CI,610
216+
RG,RMM,858
217+
RH,DOM,275
218+
RIM,DZ,463
219+
RIM,RMM,2237
220+
RL,IL,79
221+
RL,SYR,375
222+
RMM,DZ,1376
223+
RMM,RN,821
224+
RN,DZ,956
225+
RN,LAR,354
226+
RN,TCH,1175
227+
RO,UA,531
228+
ROK,NOK,238
229+
ROU,BR,985
230+
ROU,RA,579
231+
RSM,I,39
232+
RT,BEN,644
233+
RT,BF,126
234+
RT,GH,877
235+
RWA,BI,290
236+
RWA,EAT,217
237+
RWA,EAU,169
238+
RWA,ZRE,217
239+
SD,MOC,105
240+
SD,RSA,430
241+
SF,R,1313
242+
SF,S,586
243+
SK,A,91
244+
SK,CZ,215
245+
SK,H,515
246+
SK,PL,444
247+
SK,UA,90
248+
SLO,A,324
249+
SLO,H,102
250+
SLO,HR,546
251+
SLO,I,235
252+
SME,BR,597
253+
SME,GUY,600
254+
SN,RG,330
255+
SN,RIM,813
256+
SN,RMM,419
257+
SP,ETH,1626
258+
SYR,IRQ,605
259+
SYR,TR,822
260+
TAD,AFG,1206
261+
TAD,KGZ,870
262+
TAD,TJ,414
263+
TAD,UZB,1161
264+
TCH,LAR,1055
265+
TCH,SUD,1360
266+
THA,MYA,1800
267+
TJ,R,3645
268+
TM,AFG,744
269+
TM,IR,992
270+
TM,KAZ,379
271+
TN,DZ,965
272+
TN,LAR,459
273+
TR,IR,499
274+
UA,R,1576
275+
UAE,OM,410
276+
UAE,SA,457
277+
USA,CDN,8893
278+
UZB,AFG,137
279+
UZB,KAZ,2203
280+
UZB,TM,1621
281+
V,I,3
282+
VN,TJ,1281
283+
WAG,SN,740
284+
WAL,LB,306
285+
WAL,RG,652
286+
WAN,RN,1497
287+
WAN,TCH,87
288+
WSA,DZ,42
289+
WSA,MA,443
290+
WSA,RIM,1561
291+
YE,SA,1458
292+
YU,BG,318
293+
YU,RO,476
294+
YV,BR,2200
295+
YV,CO,2050
296+
Z,ANG,1110
297+
Z,EAT,338
298+
Z,MOC,419
299+
Z,NAM,233
300+
Z,ZRE,1930
301+
ZRE,SUD,628
302+
ZW,MOC,1231
303+
ZW,RB,813
304+
ZW,RSA,225
305+
ZW,Z,797

mysqldump_to_csv/mysql_dump_to_csv.py

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import ast
2+
import csv
3+
import os
4+
import sys
5+
import re
6+
7+
# This will hold the table name as key, and columns as values.
8+
mainDict = {}
9+
10+
11+
def createStatement(line):
12+
return line.startswith('CREATE TABLE')
13+
14+
15+
# To detect fields, aka column names
16+
def fieldDef(line):
17+
return line.strip().startswith('`')
18+
19+
20+
def insertStatement(line):
21+
return line.startswith('INSERT INTO')
22+
23+
24+
def getCleanedValue(line):
25+
value = None
26+
result = re.search(r'\`([^\`]*)\`', line)
27+
if result:
28+
value = result.groups()[0]
29+
print(value)
30+
return value
31+
32+
33+
def getValueTuple(line):
34+
values = line.partition(' VALUES ')[-1].strip().replace('NULL', "''")
35+
# To exclude the ;
36+
if values[-1] == ';':
37+
values = values[:-1]
38+
39+
return ast.literal_eval(values)
40+
41+
42+
def writeFile(outputDirectory, tableName, schema, values):
43+
# File name that the current table will be assigned to
44+
fileName = os.path.join(outputDirectory, '%s.csv' % (tableName,))
45+
with open(fileName, 'w') as writeFile:
46+
writer = csv.DictWriter(writeFile, fieldnames=schema)
47+
writer.writeheader()
48+
for value in values:
49+
writer.writerow(dict(zip(schema, value)))
50+
51+
52+
def parseFile(fileName, outputDirectory):
53+
tableName = None
54+
55+
with open(fileName, 'r') as readFile:
56+
for line in readFile:
57+
if createStatement(line):
58+
tableName = getCleanedValue(line)
59+
mainDict[tableName] = []
60+
elif tableName and fieldDef(line):
61+
fieldName = getCleanedValue(line)
62+
mainDict[tableName].append(fieldName)
63+
elif insertStatement(line):
64+
tableName = getCleanedValue(line)
65+
currentTable = mainDict[tableName]
66+
values = getValueTuple(line)
67+
writeFile(outputDirectory, tableName, currentTable, values)
68+
69+
70+
if __name__ == '__main__':
71+
parseFile(sys.argv[1], sys.argv[2])

0 commit comments

Comments
 (0)