Hice pruebas creando el format file a partir del siguiente comando:
Código:
para una tabla con los siguiente campos:C:\>bcp BBDD.dbo.Mediciones format nul -S PCX\SQLEXPRESS -T -n -f GPS.fmt
Cita:
Lo que ha generado lo siguiente:-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)).
-Latitud (decimal(18,8)).
- TipoLatitud (varchar(50)).
-Longitud (decimal(18,8)).
- TipoLongitud (varchar(50)).
Código:
hasta ahí todo normal. 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
Cuando trato de ejecutar el procedimiento almacenado, si especifico el format file:
Código:
Me da los siguientes errores:BULK INSERT BBDD.dbo.Mediciones FROM 'C:\Prueba.txt' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = ';', FORMATFILE = 'C:\GPS.fmt' );
Cita:
En cambio si lo ejecuto sin el FORMATFILE lo hace correctamente.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)".
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)".
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.