"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué BULK INSERT no acepta rutas de archivos variables en procedimientos almacenados?

¿Por qué BULK INSERT no acepta rutas de archivos variables en procedimientos almacenados?

Publicado el 2024-12-22
Navegar:588

Why Doesn't BULK INSERT Accept Variable File Paths in Stored Procedures?

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.

Último tutorial Más>

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