Os desafios com isso são que os dados não são um arquivo de tipo CSV simples, em que a primeira linha é o nome das colunas e o restante das linhas são dados da coluna por linha.
Aqui você tem column_name = column_data, delimitado por ;
characters. Minha solução seria usar uma linguagem como o Python para ler o arquivo em linha por linha. Eu criaria dict () de cada linha e um par de K: V para cada campo. Então eu adicionaria esse dict a uma lista () de todas as linhas.
Depois disso, posso processar a lista. Se eu estiver na primeira linha, vou imprimir os Nomes das Colunas, depois os valores, caso contrário, só imprimirei os valores.
Acho que o método seria semelhante em qualquer idioma que você esteja usando, mas é definitivamente factível.
Veja um exemplo rápido em Python que usa OrderedDicts para preservar a ordem "column":
#!/usr/bin/python
''' a quick example of a script to parse '=' delimited fields in
';' delimited columns of a text file.
prints tab delimited columnar data with headers to STDOUT
'''
from collections import OrderedDict
with open('data', 'rb') as infile:
FLINES = infile.read().split()
DATA = []
for line in FLINES:
fields = line.split(';')
d = OrderedDict()
for field in fields:
if '=' in field:
col, value = field.split('=')
d.update({col: value})
DATA.append(d)
L = 0
for D in DATA:
if L == 0:
print '\t'.join(D.keys())
print '\t'.join(D.values())
L += 1
- Este exemplo pressupõe que todas as suas linhas terão as mesmas colunas, porque imprimirá apenas os nomes dos colônimos da primeira entrada que sair da lista.