在 SQL Server 中使用 spWriteStringToFile 时文件开头的 BOM



我正在使用SQL服务器以HTML和CSV格式从查询中导出数据。我还写出一个批处理文件,该文件调用CoreFTP以SFTP将这些文件发送到站点。有一个夜间进程调用批处理文件和 SFTP 这些文件。除了批处理文件在开始时有一个 BOM(字节顺序标记),cmd.exe 阻塞,否则一切都有可能工作。至少我认为是这样。

当批处理文件执行时,错误是"{不可打印字符}C"未被识别为内部或外部命令。不可打印的字符不会显示在文本编辑器中,但它就在那里。我认为这与UTF编码有关。

有没有办法在使用spWriteStringToFile时更改编码?

格雷格

DECLARE @CoreFileName VARCHAR(30)
SET @CoreFileName = CONVERT(VARCHAR(10), CURRENT_TIMESTAMP, 105)
DECLARE @FileName VARCHAR(30)
SET @FileName = 'ED_' + @FileName 
SET @FileName = CONVERT(VARCHAR(10), CURRENT_TIMESTAMP, 105) + '.html'
EXEC spWriteStringToFile @OutPut, 'D:OutFolderFTP', @FileName 
SET @FileName = CONVERT(VARCHAR(10), CURRENT_TIMESTAMP, 105) + '.csv'
EXEC spWriteStringToFile @CSVOutPut, 'D:OutFolderFTP', @FileName 
DECLARE @CoreFTP VARCHAR(200)
SET @CoreFTP = 'C:' + CHAR(13) + CHAR(10) + 'cd "C:Program FilesCoreFTP"' + CHAR(13) + CHAR(10) 
SET @CoreFTP = @CoreFTP + 'coreftp.exe -site OpenDoor -B -u D:OutFolder' + @CoreFileName + '.* /NCHIN/InpatientNotice/'
EXEC spWriteStringToFile @CoreFTP, 'D:OutFolder', 'SendFiles.Bat'

刚刚找到答案。在 sp 中查找

@objTextStream OUT, @FileAndPath,2,true

并将其更改为

@objTextStream OUT, @FileAndPath,2,false

格雷格

最新更新