pdbench/TPCH-Trio/tpch_vertical_partitioner.py

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