dimarts, 12 de juliol de 2016

ADEU-BIML: Text File (I)

Després de veure com generar automàticament els dtsx amb BIML per a orígens SQL Server i Excel ara veurem com fer-ho per fitxer plans de text.
Tractarem fitxers de text de 2 tipus: de camps delimitats i de camps de mida fixa. El que canviarà, bàsicament, serà la generació de la metadata.
També afegirem la possibilitat de processar tots els fitxers de text que estiguin en un directori i que compleixin un patró en el nom.
L'esquema per a guardar la metadata quedarà de la següent manera:

Tenim la taula source_FlatFile que hereta de source i que té com a subclasse sourceFlatFileFolder, que és on guardarem els atributs del directori on estan els fitxers, el patró de nom dels fitxers, si s'han d'explorar els subdirectoris, etc.
En aquest cas no ens fa falta subclasse de source_detail, amb els atributs de la superclasse en tenim prou. El que sí que fa falta és una subclasse de source_column per als fitxers de camps de mida fixa. En la subclasse es guardarà la mida de cada camp.


En els cas dels flat files la majoria de la metadata l'haurem de posar manualment. En el cas de fitxers amb camps de mida fixa tota la metadata és manual. En els fitxers de camps separats per un caràcter sí que podrem definir les columnes (en cas que tingui capçalera amb el nom de la columna i en cas contrari amb un nom genèric tipus col1, col2...) i utilitzarem un tipus de dades estàndard per a tots els camps (varchar(4000)). El tipus de dades s'haurà de corregir posteriorment.

Un dels punts més diferent dels flatFiles respecte a les altres connexions és la definició de la connexió. No només s'ha de definir la FlatFileConnection, sinó que també s'ha de definir el FileFormat amb la informació dels camps. Teniu el codi a: https://github.com/jordiisidro/adeu-biml/blob/master/UT_generateConnections.biml
Per a la generació de la metadata considererem que el fitxer només té una columna que serà de tipus AnsiString de 4000. A través del procediment sp_generateColumnsFF trencarem aquesta columna tenint en compte el separador que li hem passat.
Per saber el tipus de dades a mapejar en aquest bloc trobareu la informació molt detallada (http://www.cathrinewilhelmsen.net/2014/05/27/sql-server-ssis-and-biml-data-types/)

I això és tot per a generar la metadata. En els FlatFiles no es pot fer gaire cosa, bàsicament podem saber quines columnes hi ha en un fitxer on els camps estan separats per símbols, però no podem saber el tipus de dades.

La creació i esborrat de taules és idèntica que en els casos anteriors.
En el proper post veurem com generar els dtsx per carregar les dades. Ens centrarem en com generar el FileFormat i també en com carregar els fitxers d'un directori.

Com sempre teniu tot el codi a: https://github.com/jordiisidro/adeu-biml/


Cap comentari:

Publica un comentari