Pregunta

Recibimos gran cantidad de datos como archivos planos: delimitted o simplemente registros de longitud fija. A veces es difícil de averiguar lo que los archivos contienen en realidad.

¿Hay prácticas bien establecidas para incrustar el esquema del archivo al principio o al final de un archivo para hacer explican por sí mismos el archivo?

Sólo para tener una idea, imaginar algo como esto:

<data name=test records=2 type=fixed>
   <field name=foo start=0 length=2 type=numeric>
   <field name=bar start=2 length=4 type=text>
</data>
11test
12ing 

Nos gustaría analizar el código XML en el principio y utilizarlo para la lectura de los registros.

¿Fue útil?

Solución

Por lo que yo sepa no -. O al menos no enormemente

Lo único que yo sepa (en términos de un estándar ampliamente aceptado) está en la primera fila del archivo de datos que los nombres de columna - al menos para los registros delimitados, de longitud fija es más difícil, especialmente si sus datos puede contener varios tipos de registro (que he encontrado para ser mucho más probable de longitud fija que con delimitada).

Desde mi me gustaría sugerir que realmente no se puede incrustar la definición en el archivo Asumo que está recibiendo datos de fuentes externas de tal modo que es poco probable obtener ayuda de ellos e incluso si lo hace se crea inmediatamente retos que no se puede (por ejemplo) abrir fácilmente los archivos con Excel si es necesario.

Pensando un poco lateralmente que podría - si el uso de XML - potencialmente incrustar el archivo en la definición (gran trozo de CDATA). Esta es una solución ligeramente más práctico como su puesta una envoltura alrededor de sus datos externos no pedir que los datos en sí puede modificar. No está seguro de qué tan práctico es esto - pero se siente mejor para mí que al revés

.

Otros consejos

¿Has mirado en Protocolo Buffers en busca de inspiración?

No sé acerca de cualquier práctica establecida, pero su idea de simplemente anteponiendo el esquema de los datos parece muy bien. Apache Avro es una herramienta de serialización de datos similares a los búferes de protocolo y de segunda mano. Creo que el uso típico de Avro implica almacenar el esquema con los datos (anteponiendo en la corriente, supongo).

quería mencionar también el proyecto rel="nofollow"> PADS . Tienen un lenguaje de esquema diseñado para que pueda describir "ad-hoc" formatos de datos. Actualmente creo que sólo tienen implementaciones C y ML, que pueden ser un problema. Por otro lado, su lenguaje de esquema fue diseñado para manejar una amplia variedad de formatos, por lo que todavía podría valer la pena usarla por su propia cosa basado en XML.

scroll top