"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que BULK INSERT não aceita caminhos de arquivos variáveis ​​em procedimentos armazenados?

Por que BULK INSERT não aceita caminhos de arquivos variáveis ​​em procedimentos armazenados?

Publicado em 2024-12-22
Navegar:835

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

Inserção em massa usando procedimentos armazenados: solução de problemas

Em uma tentativa de inserir dados em massa usando um procedimento armazenado, um desenvolvedor encontrou erros de sintaxe. O objetivo era replicar uma consulta BULK INSERT funcional em um procedimento. Aqui está uma análise do problema e sua resolução.

O problema surge ao tentar passar um nome de arquivo como uma variável para o comando BULK INSERT dentro do procedimento armazenado. Infelizmente, esta é uma operação não suportada por BULK INSERT.

Aqui está um exemplo de uma tentativa malsucedida usando uma variável:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'

BULK INSERT ZIPCodes
FROM @filename
WITH

Em vez disso, o comando BULK INSERT espera um caminho de arquivo embutido em código. Para contornar essa limitação, considere construir a instrução BULK INSERT como uma string com um nome de arquivo fixo e executá-la 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

Ao usar SQL dinâmico, a instrução construída pode ser executada, resolvendo os erros de sintaxe encontrados na implementação do procedimento armazenado original.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3