Я написал небольшой скрипт для проверки концепции здесь, на python. Я признаю, что он глючит и, вероятно, будут сделаны некоторые улучшения производительности, но он это сделает. Я запустил файл 40x40 и получил желаемый результат. Я начал работать с чем-то более похожим на ваш пример данных, и мне потребовалось слишком много времени для ожидания.
path = mkdtemp()
try :
with open('/home/user/big-csv', 'rb') as instream:
reader = csv.reader(instream)
for i, row in enumerate(reader):
for j, field in enumerate(row):
with open(join(path, 'new row {0:0>2}'.format(j)), 'ab') as new_row_stream:
contents = [ '{0},'.format(field) ]
new_row_stream.writelines(contents)
print 'read row {0:0>2}'.format(i)
with open('/home/user/transpose-csv', 'wb') as outstream:
files = glob(join(path, '*'))
files.sort()
for filename in files:
with open(filename, 'rb') as row_file:
contents = row_file.readlines()
outstream.writelines(contents + [ '\n' ])
finally:
print "done"
rmtree(path)