Inserción masiva mediante procedimientos almacenados: solución de problemas
En un intento de insertar datos de forma masiva mediante un procedimiento almacenado, un desarrollador encontró errores de sintaxis. El objetivo era replicar una consulta BULK INSERT funcional en un procedimiento. Aquí hay un análisis del problema y su resolución.
El problema surge al intentar pasar un nombre de archivo como una variable al comando BULK INSERT dentro del procedimiento almacenado. Desafortunadamente, esta es una operación no admitida por BULK INSERT.
Aquí hay un ejemplo de un intento fallido usando una variable:
DECLARE @filename VARCHAR(255) SET @filename = 'e:\5-digit Commercial.csv' BULK INSERT ZIPCodes FROM @filename WITH
En su lugar, el comando BULK INSERT espera una ruta de archivo codificada. Para solucionar esta limitación, considere construir la instrucción BULK INSERT como una cadena con un nombre de archivo fijo y ejecutarla como SQL dinámico.
DECLARE @filepath NVARCHAR(500) SET @filepath = N'e:\5-digit Commercial.csv' DECLARE @bulkinsert NVARCHAR(2000) SET @bulkinsert = N'BULK INSERT ZIPCodes FROM ''' @filepath N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')' EXEC sp_executesql @bulkinsert
Al utilizar SQL dinámico, se puede ejecutar la declaración construida, resolviendo los errores de sintaxis encontrados en la implementación del procedimiento almacenado original.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3