Saltar al contenido

¿Determinar la FILA que causó el error “final inesperado del archivo” en BULK INSERT?

Solución:

Para localizar la fila problemática, utilice el especificador de archivo de error.

BULK INSERT myData
FROM 'C:......myData.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = 'n',
ERRORFILE = 'C:......myRubbishData.log' 
);

myRubbishData.log tendrá las filas ofensivas y un archivo complementario myRubbishData.log.txt le dará números de fila y compensaciones en el archivo.

Ejemplo de archivo complementario:

Row 3 File Offset 152 ErrorFile Offset 0 - HRESULT 0x80004005
Row 5 File Offset 268 ErrorFile Offset 60 - HRESULT 0x80004005
Row 7 File Offset 384 ErrorFile Offset 120 - HRESULT 0x80004005
Row 10 File Offset 600 ErrorFile Offset 180 - HRESULT 0x80004005
Row 12 File Offset 827 ErrorFile Offset 301 - HRESULT 0x80004005
Row 13 File Offset 942 ErrorFile Offset 416 - HRESULT 0x80004005

Diversión diversión diversión. No he encontrado una buena manera de depurar estos problemas, así que uso la fuerza bruta. Es decir, las opciones FirstRow y LastRow son muy útiles.

Comience con LastRow = 2 y siga intentándolo. Cargue los resultados en una tabla desechable, que puede truncar fácilmente.

Y también debe tener en cuenta que la primera fila también podría causarle problemas.

Tengo un archivo csv que importo usando Bulk

BULK INSERT [Dashboard].[dbo].[3G_Volume]
FROM 'C:3G_Volume.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '","',
ROWTERMINATOR = 'n'
)
GO

Por lo general, utilizo este script y no tiene problemas, pero en raras ocasiones.

Encuentro este error …

“El proveedor OLE DB” BULK “para el servidor vinculado” (nulo) “informó un error. El proveedor no proporcionó ninguna información sobre el error”.

Por lo general, esto sucede cuando la última fila tiene valores en blanco (nulo).

Debe vincular su archivo csv en MS Access db para verificar los datos. (Si su csv no tiene más de 1.4 millones de filas, puede abrirlo en Excel)

Dado que mis datos tienen alrededor de 3 millones de filas, necesito usar access db.

Luego verifique el número de la última fila con espacios en blanco y reste el número de filas nulas a sus filas totales para csv.

si tiene 2 filas en blanco al final y el número total de filas es 30000005, el script se volverá así …

BULK
INSERT [Dashboard].[dbo].[3G_Volume]
 FROM 'C:3G_Volume.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '","',
ROWTERMINATOR = 'n',
Lastrow = 30000003
)
GO

Saludos … Mhelboy

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *