Published on

November 1, 2014

Errores comunes con el comando BULK INSERT en SQL Server

Trabajar con SQL Server puede ser gratificante, pero también conlleva sus desafíos. Una tarea común es importar datos desde un archivo CSV o de texto a una tabla de SQL Server utilizando el comando BULK INSERT. Sin embargo, este proceso a veces puede generar errores que pueden resultar frustrantes de solucionar.

En una publicación anterior del blog, discutí cómo importar un archivo CSV a SQL Server utilizando BULK INSERT. Desde entonces, he recibido numerosos comentarios de los lectores sobre varios errores que encontraron al intentar utilizar este comando. En esta publicación del blog, abordaré algunos de estos errores y proporcionaré soluciones para solucionarlos.

Error: Msg 4860, Nivel 16, Estado 1

Este es uno de los errores más comunes reportados por los lectores. Suele ocurrir cuando el archivo que se está importando no existe o la ruta del archivo es incorrecta. Para reproducir este error, consideremos el siguiente ejemplo:

CREATE TABLE library_books_loan (
    student_id VARCHAR(10) NOT NULL,
    book_id VARCHAR(10) NOT NULL,
    branch_id SMALLINT NOT NULL,
    id_no VARCHAR(10) NOT NULL,
    date_out DATE NULL DEFAULT NULL,
    due_date DATE NULL DEFAULT NULL,
    date_in DATE NULL DEFAULT NULL
)

-- Archivo de texto de muestra para insertar en la tabla
student_id,book_id,branch_id,id_no,date_out,due_date,date_in
1,0399147020,1,9019,2013-11-22,2013-12-06,2013-12-01
2,0030059380,4,9007,2013-12-01,2013-12-15,2013-12-16
3,0671880756,5,9018,2013-12-08,2013-12-22,2013-12-22
4,0911625291,3,9013,2014-01-02,2014-01-16,2014-01-12
5,0688161995,5,9022,2014-02-10,2014-02-24,2014-03-01
6,0911625291,2,9011,2014-03-03,2014-03-17,2014-03-16
7,1861003730,3,9034,2014-04-17,2014-05-01,NULL
12,0911625607,2,9018,2014-04-19,2014-05-03,NULL

Si guarda este archivo como “C:\Temp\Books_Library.txt” y ejecuta el comando BULK INSERT, es posible que encuentre el siguiente error:

Msg 4860, Nivel 16, Estado 1, Línea 12
No se puede cargar por lotes. El archivo "C:\Temp\Books_Library.txt.txt" no existe.

Para resolver este error, asegúrese de que el archivo exista en la máquina donde se está ejecutando SQL Server y de que la ruta del archivo sea correcta en el propio servidor.

Error: Msg 4864, Nivel 16, Estado 1

Otro error común que puede ocurrir durante el proceso de BULK INSERT es un error de conversión de datos. Este error suele ocurrir cuando hay una incompatibilidad de tipos o un carácter no válido para el conjunto de caracteres especificado. Consideremos el siguiente ejemplo:

CREATE TABLE SQLAuth (
    d DATE
)

INSERT INTO SQLAuth VALUES ('NULL')

-- Error: Msg 241, Nivel 16, Estado 1, Línea 3
-- Error de conversión al convertir la fecha y/o la hora de una cadena de caracteres.

En este ejemplo, estamos intentando insertar la cadena “NULL” en una columna definida como fecha. Esto provoca un error de conversión de datos. Para solucionar este error, modifique el archivo de texto y deje vacío el valor de la columna, que se tratará automáticamente como NULL.

Aquí está la versión modificada del archivo de texto:

student_id,book_id,branch_id,id_no,date_out,due_date,date_in
1,0399147020,1,9019,2013-11-22,2013-12-06,2013-12-01
2,0030059380,4,9007,2013-12-01,2013-12-15,2013-12-16
3,0671880756,5,9018,2013-12-08,2013-12-22,2013-12-22
4,0911625291,3,9013,2014-01-02,2014-01-16,2014-01-12
5,0688161995,5,9022,2014-02-10,2014-02-24,2014-03-01
6,0911625291,2,9011,2014-03-03,2014-03-17,2014-03-16
7,1861003730,3,9034,2014-04-17,2014-05-01,
12,0911625607,2,9018,2014-04-19,2014-05-03,

Al ejecutar nuevamente el comando BULK INSERT con el archivo modificado, los datos deberían insertarse correctamente, con valores NULL en las columnas correspondientes.

Estos son solo algunos ejemplos de errores comunes que pueden ocurrir al utilizar el comando BULK INSERT en SQL Server. Si encuentra otros errores, no dude en dejar un comentario y los abordaré en una futura publicación del blog.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.