Definiciones de formato de longitud fija

Los archivos de formato de longitud fija deben tener una definición de formato. Este tema incluye ejemplos de definiciones de formato de longitud fija para tipos de datos típicos.

Final de registro

Cuando los registros de formato fijo terminan en un carácter de nueva línea, no se necesita ninguna acción. La nueva línea es el delimitador de final de registro predeterminado. Cuando no hay separador de registro, utilice las comillas simples una al lado de la otra, como en el siguiente ejemplo:
RecordDelim ''
Se necesita un delimitador de fin de registro, incluso para el último registro.

La opción RecordDelim especifica una secuencia literal de hasta 8 bytes, que no traduce representaciones de escape comunes o no admite funciones como char(8).

Longitud de registro

La longitud de registro es opcional, pero puede proporcionar comentarios que indiquen que la definición de formato tiene la longitud correcta. La longitud excluye el delimitador de fin de registro. A continuación se ofrece un ejemplo:
Recordlength 72

Omisión de campos

La siguiente cláusula omite 4 bytes:
“filler char(4)  bytes 4” 
Sin embargo, el método preferido es indicar que el campo se está omitiendo, como en el siguiente ejemplo:
“filler fld_name char(4) bytes 4”

Valores temporales

Los valores temporales en archivos de formato de longitud fija a menudo omiten delimitadores. La tabla siguiente muestra cláusulas que se utilizan para cargar fechas, horas e indicaciones de fecha y hora sin delimitadores.
Tabla 1. Valores temporales
Tipo de datos Valor Cláusula de formato
fecha 20101231 date1 date YMD'' bytes 8
Hora 231559 time1 time(6) 24hour '' bytes 6
indicación de fecha y hora 0101231231559 stamp1 timestamp(6) 24hour '' bytes 14
indicación de fecha y hora 20101231231559000001 Cárguelos como char(24) y después utilice una sentencia insert-select

to_timestamp(col,'YYYYMMDDHH24MISSUS')

fecha 2010-12-31 date2 date YMD'-' bytes 10
Hora 23.15.59 time2 time(6) 24hour '.' bytes 8
indicación de fecha y hora 2010-12-31 23:15:59 tms2 timestamp(6) YMD '-' 24hour ':' bytes 19
indicación de fecha y hora 2010-12-31 23:15:59.0001 tms3 timestamp(6) YMD '-' 24hour ':' bytes 26
timetz 12:30:45+03:00 Tz1 TIMETZ(6) 24HOUR ':' bytes 14
timetz 123045+-0300 Cargar como char(11) y luego utilizar la sentencia insert-select

(substring(col1,1,2)||':'|| substring(col1,3,2)||':'||substring(col1,5,5)||':'|| substring(col1,10,2))::timetz

Valores numéricos

La tabla siguiente muestra valores numéricos.
Tabla 2. Valores numéricos
Tipo de datos Valor Cláusula de formato
entero 32767 int1 int2 bytes 5
int8 9123456789123456 int2 int8 bytes 16
numérico 2315.59 num1 numeric(6,2) bytes 7
numérico 231559 Cárguelos como char(6) y después utilice una sentencia insert-select (col/100)::numeric(6,2)
flotante 1.2345678 flt1 floating bytes 9
flotante 12345678 Cargar como char(8) y luego usar la sentencia insert-select(substring(col1,1,1)||'.'||substring(col1,2,7))::float
doble 1.2345678 flt1 double bytes 9
doble 12345678 Cargar como char(8) y luego usar la sentencia insert-select (substring(col1,1,1)||'.'||substring(col1,2,7))::double

Valores lógicos

La tabla siguiente muestra los valores lógicos.
Tabla 3. Valores lógicos
Tipo de datos Valor Cláusula de formato
booleano S o s, N o n BOOL Y_N BYTES 1
booleano 1, 0 BOOL 1_0 BYTES 1
booleano T o t, F o f BOOL T_F BYTES 1

Valores nulos

Los archivos de formato de longitud fija normalmente utilizan valores "mágicos" para representar nulos. Añadiendo la cláusula nullifa cualquier especificación permite que la columna se compruebe para obtener nulo. Una cláusula nullif tiene las partes siguientes:
  • La palabra clave nullif
  • La referencia de columna
  • La expresión de prueba
Como ejemplo, una especificación de archivo donde field1 es una fecha y se considera nulo si tiene el valor ’99991231’, tendrá las siguientes características:
  • La especificación nullif es como sigue:
    “nullif &=’99991231’”
  • La especificación completa es:
    “fld1 date YMD'' bytes 8 nullif &=’99991231’”
  • Todas las especificaciones de formato dan soporte a la cláusula nullif.

Además de admitir &=, que evalúa que una "cadena debe coincidir exactamente", la cláusula nullif admite &&=, que permite la coincidencia de las subcadenas. Esto resulta útil en casos donde la serie se puede dar en cualquier lugar de un campo con relleno de espacios. Por ejemplo, nullif &&=’N’ coincide con las diferentes expresiones “ N “, “N “ y “ N”.

La tabla siguiente muestra los valores nulos:
Tabla 4. Valores nulos
Tipo de datos Valor nulo Cláusula de formato
booleano ' ' (1 espacio) BOOL Y_N BYTES 1 NULLIF &=' '(1 space)
fecha 000000 DATE YMD '' BYTES 6 NULLIF &='000000'
int '      ' (6 espacios) INT BYTES 6 NULLIF &='      ' (6 spaces)