«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему BULK INSERT не принимает переменные пути к файлам в хранимых процедурах?

Почему BULK INSERT не принимает переменные пути к файлам в хранимых процедурах?

Опубликовано 22 декабря 2024 г.
Просматривать:266

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

Массовая вставка с использованием хранимых процедур: устранение неполадок

При попытке массовой вставки данных с использованием хранимой процедуры разработчик обнаружил синтаксические ошибки. Целью было реплицировать работающий запрос BULK INSERT в процедуру. Вот анализ проблемы и ее решение.

Проблема возникает при попытке передать имя файла в качестве переменной команде BULK INSERT в хранимой процедуре. К сожалению, эта операция не поддерживается функцией BULK INSERT.

Вот пример неудачной попытки использования переменной:

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

BULK INSERT ZIPCodes
FROM @filename
WITH

Вместо этого команда BULK INSERT ожидает жестко запрограммированный путь к файлу. Чтобы обойти это ограничение, рассмотрите возможность создания инструкции BULK INSERT в виде строки с фиксированным именем файла и ее выполнения как динамического SQL.

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

При использовании динамического SQL можно выполнить созданный оператор, устраняя синтаксические ошибки, возникшие в исходной реализации хранимой процедуры.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3