74 lines
1.8 KiB
Python
74 lines
1.8 KiB
Python
#!/usr/bin/env python
|
|
|
|
import sys
|
|
import re
|
|
import random
|
|
|
|
if len(sys.argv) != 4:
|
|
print 'invalid arg'
|
|
print 'Usage: ' + sys.argv[0] + ' filename #maxalts tablename'
|
|
sys.exit(1)
|
|
|
|
filename=sys.argv[1]
|
|
maxalts=int(sys.argv[2])
|
|
tablename=sys.argv[3]
|
|
|
|
try:
|
|
f=open(filename, 'r')
|
|
except:
|
|
print 'open error'
|
|
sys.exit(2)
|
|
|
|
lineno=0
|
|
alts = 0
|
|
next_alts = random.randint(1, maxalts)
|
|
xtuple=[]
|
|
xtups = 0
|
|
|
|
while 1:
|
|
line = f.readline()
|
|
if line != "":
|
|
line = re.sub(';','', line)
|
|
line = re.split('\|', line)
|
|
line.pop()
|
|
xtuple.append(line)
|
|
alts += 1
|
|
|
|
if alts == next_alts or line == "":
|
|
inserts = []
|
|
for i in range(len(xtuple)):
|
|
line = xtuple[i]
|
|
for j in range(len(line)):
|
|
if i == 0:
|
|
str = 'insert into %s_%s values[ (' % (tablename, j)
|
|
inserts.append(str)
|
|
else:
|
|
str = inserts[j]
|
|
|
|
if re.match('^[+-]?\d*\.?\d+?$', line[j]):
|
|
str += '%s, %s' % (xtups + i, line[j])
|
|
else:
|
|
str += '%s, \'%s\'' % (xtups + i, line[j])
|
|
|
|
if i == len(xtuple)-1:
|
|
str += ' ):%s ];' % (alts == 1 and 1 or (1.0 / alts))
|
|
print str
|
|
else:
|
|
str += ' ):%s | ( ' % (alts == 1 and 1 or (1.0 / alts))
|
|
inserts[j] = str
|
|
|
|
next_alts = random.randint(1, maxalts)
|
|
xtups += len(xtuple)
|
|
xtuple=[]
|
|
alts = 0
|
|
if line == "":
|
|
print 'commit;'
|
|
#print "%d ALTS." % xtups
|
|
sys.exit(2)
|
|
|
|
lineno += 1
|
|
if lineno % 1000 == 0:
|
|
print 'commit;'
|
|
#print "%d ALTS." % xtups
|
|
|