2012-08-27 29 views
16

Intento cargar mi base de datos con toneladas de datos de un archivo .csv con un tamaño de 1,4 GB. Pero cuando intento ejecutar mi código, obtengo errores.No se puede obtener una fila del proveedor OLE DB "BULK" para el servidor vinculado "(nulo)"

Aquí está mi código:

USE [Intradata NYSE] 
GO 
CREATE TABLE CSVTest1 
(Ticker varchar(10) NULL, 
dateval date NULL, 
timevale time(0) NULL, 
Openval varchar(10) NULL, 
Highval varchar(10) NULL, 
Lowval varchar(10) NULL, 
Closeval varchar(10) NULL, 
Volume varchar(10) NULL 
) 
GO 

BULK 
INSERT CSVTest1 
FROM 'c:\intramerge.csv' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 
--Check the content of the table. 
SELECT * 
FROM CSVTest1 
GO 
--Drop the table to clean up database. 
DROP TABLE CSVTest1 
GO 

Trato de construir una base de datos con una gran cantidad de stockquotes. Pero me da este mensaje de error:

Msg 4832, nivel 16, estado 1, línea 2 de carga a granel: Un final inesperado de archivo fue encontrado en el archivo de datos. Msg 7399, nivel 16, estado 1, línea 2 El proveedor OLE DB "BULK" para servidor vinculado "(nulo)" informó un error. El proveedor no dio ninguna información sobre el error. Msg 7330, nivel 16, estado 2, línea 2 No se puede obtener una fila de proveedor OLE DB "a granel" para el servidor vinculado "(null)"

No entiendo mucho de SQL, pero espero que coger una o dos cosas Espero que alguien vea lo que podría ser muy obvio.

Respuesta

4

Recibí el mismo error cuando tenía un número diferente de campos delimitados en mi CSV que las columnas que tenía en mi tabla. Compruebe si tiene el número correcto de campos en intramerge.csv.

1

Era una vieja pregunta, pero parece que mi hallazgo podría poner de relieve a otras personas que tienen un problema similar.

El valor predeterminado de tiempo de espera de SSIS parece ser de 30 segundos. Esto hace que cualquier operación de servicio enlazado o enlazado IO en su paquete vaya mucho más allá de ese valor de tiempo de espera y cause un tiempo de espera excedido. Aumentar el valor de tiempo de espera (cambiar a "0" sin tiempo de espera) resolverá el problema.

11

Tuve el mismo problema.

Solución:

Compruebe el archivo de texto CSV o en los editores de texto como Notepad +. La última línea puede estar incompleta. Eliminarlo

9

Resurrecting una vieja pregunta, pero en caso de que esto ayuda a otra persona: (¡por fin!) Después de mucho ensayo y error que finalmente fue capaz de deshacerse de este error al cambiar esto:

ROWTERMINATOR = '\n' 

Para esto:

ROWTERMINATOR = '0x0A' 
+1

Esto funcionó para mí. También recomiendo ejecutar el comando 'more' en CMD para inspeccionar el final de archivos más grandes para pie de página o problemas. Si hace 'más + n [nombre de archivo]' la CMD mostrará todas las líneas después de 'n', use esto para inspeccionar cerca del final del archivo. – rjmd

2

tengo este error cuando mi archivo de formato (es decir, se especifica mediante el parámetro FORMATFILE) tenía un ancho de columna que era más pequeño que el tamaño real de la columna (por ejemplo, en lugar de varchar(50)varchar(100)).

+0

Caso similar para mí, cambiar el tipo de datos 'int' de la columna a' bigint' resuelve el problema. Sin embargo, creo que esto debería generar un error de 'desbordamiento'. – Athafoud

+0

Lo mismo para mí. Nada que ver con el tamaño de columna, pero un archivo de formato incorrecto es el mismo. –

1

Recibí esta excepción cuando el campo de caracteres en mi tabla SQL era demasiado pequeño para el texto entrante. Intente hacer la columna más grande.

0

Esta podría ser una mala idea con un 1,5 GB por completo, pero se puede probar en un subconjunto (empezar con un par de filas):

CREATE TABLE CSVTest1 
(Ticker varchar(MAX) NULL, 
    dateval varchar(MAX) NULL, 
    timevale varchar(MAX) NULL, 
    Openval varchar(MAX) NULL, 
    Highval varchar(MAX) NULL, 
    Lowval varchar(MAX) NULL, 
    Closeval varchar(MAX) NULL, 
    Volume varchar(MAX) NULL 
) 

...haga su BULK INSERT, luego

SELECT MAX(LEN(Ticker)), 
    MAX(LEN(dateval)), 
    MAX(LEN(timevale)), 
    MAX(LEN(Openval)), 
    MAX(LEN(Highval)), 
    MAX(LEN(Lowval)), 
    MAX(LEN(Closeval)), 
    MAX(LEN(Volume)) 

Esto le ayudará a saber si sus estimaciones de la columna están lejos. También puede encontrar que sus columnas están desordenadas o que BULK INSERT aún puede fallar por algún otro motivo.

Cuestiones relacionadas