Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2010, 03:17
Rikku1010
 
Fecha de Ingreso: marzo-2010
Mensajes: 9
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Format file - bcp & bulk insert

Buenas a todos, os planteo mi caso por si me podéis echar una mano.

Hice pruebas creando el format file a partir del siguiente comando:

Código:
C:\>bcp BBDD.dbo.Mediciones format nul -S PCX\SQLEXPRESS -T -n
-f GPS.fmt
para una tabla con los siguiente campos:

Cita:
-Fecha (varchar(50)) -> le puse varchar para realizar la prueba para evitar problemas, luego ya probaré con datetime.
-Latitud (decimal(18,8)).
- TipoLatitud (varchar(50)).
-Longitud (decimal(18,8)).
- TipoLongitud (varchar(50)).
Lo que ha generado lo siguiente:

Código:
9.0
5
1 SQLCHAR 2 50 "" 1 Fecha Modern_Spanish_CI_AS
2 SQLDECIMAL 1 19 "" 2 Latitud ""
3 SQLCHAR 2 50 "" 3 TipoLatitud Modern_Spanish_CI_AS
4 SQLDECIMAL 1 19 "" 4 Longitud ""
5 SQLCHAR 2 50 "" 5 tipoLongitud Modern_Spanish_CI_AS
hasta ahí todo normal.

Cuando trato de ejecutar el procedimiento almacenado, si especifico el format file:

Código:
BULK INSERT BBDD.dbo.Mediciones
FROM 'C:\Prueba.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = ';',
FORMATFILE = 'C:\GPS.fmt'
);
Me da los siguientes errores:

Cita:
Mens 4866, Nivel 16, Estado 7, Procedimiento sp_medicionesposiciones_insert, Línea 10
Error de carga masiva. Columna demasiado larga en el archivo de datos para la fila 1, columna 1. Compruebe que especificó correctamente los valores para el terminador de campo y el terminador de fila.
Mens 7399, Nivel 16, Estado 1, Procedimiento sp_medicionesposiciones_insert, Línea 10
El proveedor OLE DB "BULK" para el servidor vinculado "(null)" informó de un error. El proveedor no proporcionó información acerca del error.
Mens 7330, Nivel 16, Estado 2, Procedimiento sp_medicionesposiciones_insert, Línea 10
No se puede recuperar una fila del proveedor OLE DB "BULK" para el servidor vinculado "(null)".
En cambio si lo ejecuto sin el FORMATFILE lo hace correctamente.

El contenido del fichero desde el que quiero realizar la carga:
23/02/2010,4330.4735414,N,00352.9613565,W; (Esta es la primera línea y el resto son del mismo estilo)

Luego por otro lado, si en vez de tener ese contenido tendría este otro:

23/02/2010,CAMPOSOBRANTE,4330.4735414,N,00352.9613565,W; ¿Cómo podría indicarle que no utilice el campo 2? ¿modificando la primera columna del archivo GPS.fmt como:

9.0
Num columnas
(no sé si sería 5 ó 6)
1 <- ¿posición de la columna en el archivo GPS.fmt?
3
4
5
6


?

Un saludo y muchas gracias de antemano.