sql >> Base de Datos >  >> RDS >> Sqlserver

La inserción masiva de SQL con el parámetro FIRSTROW omite la siguiente línea

No creo que puedas omitir filas en un formato diferente con BULK INSERT /BCP .

Cuando ejecuto esto:

TRUNCATE TABLE so1029384

BULK INSERT so1029384
FROM 'C:\Data\test\so1029384.txt'
WITH
(
--FIRSTROW = 2,
FIELDTERMINATOR= '|',
ROWTERMINATOR = '\n'
)

SELECT * FROM so1029384

obtengo:

col1                                               col2                                               col3
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
***A NICE HEADER HERE***
0000001234               SSNV                                               00013893-03JUN09
0000005678                                         ABCD                                               00013893-03JUN09
0000009112                                         0000                                               00013893-03JUN09
0000009112                                         0000                                               00013893-03JUN09

Parece que requiere el '|' incluso en los datos del encabezado, porque se lee hasta eso en la primera columna, absorbiendo una nueva línea en la primera columna. Obviamente, si incluye un parámetro de terminador de campo, espera que cada fila DEBE tener uno.

Puede eliminar la fila con un paso de preprocesamiento. Otra posibilidad es seleccionar solo filas completas y luego procesarlas (excluyendo el encabezado). O use una herramienta que pueda manejar esto, como SSIS.