Я пытаюсь сделать следующее: каждый день я получаю CSV-файл, который в конечном итоге необходимо импортировать в SQL через Bulk Insert.Все это прекрасно работало в течение долгого времени, но недавно один из столбцов в файле CSV содержит текст, который необходимо заменить перед массовой вставкой.
После некоторого поиска я нашел следующий код для BAT-file:
@echo off &setlocal
set "search=%1"
set "replace=%2"
set "textfile=Input.txt"
set "newfile=Output.txt"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"
del %textfile%
rename %newfile% %textfile%
Теперь, когда я положил этот bat-файл в каталог и дважды щелкнул, чтобы запустить его, он прекрасно работает.Но проблема сейчас в том, что я хочу интегрировать ее в хранимую процедуру SQL. Я помещаю ее в процедуру, подобную этой:
EXEC master..xp_CMDShell 'E:\FolderName\REPLACE.BAT'
Когда я пытаюсь запустить это, я получаю сообщение «Файл не найден» вSQL.Как для хранимой процедуры, так и для ее запуска в качестве запроса (под моими собственными учетными данными, которые являются правами администратора).Просто чтобы убедиться, что я дал пользователю SQL также полные права на определенную папку, но это тоже не помогло.
Как я могу получить эту работу внутри SQL Server?