首页 > 解决方案 > 在 SQL 中找不到文件

问题描述

我要做的是:每天我都会得到一个 CSV 文件,最终需要通过批量插入将其导入 SQL。长期以来,这一切都很好,但最近,CSV 文件中的一列包含需要在批量插入之前替换的文本。

经过一番搜索,我找到了 BAT 文件的以下代码:

@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 中完成这项工作?

标签: sql-servertsqlbatch-filexp-cmdshell

解决方案


推荐阅读