我可以将存储过程结果以 CSV 格式导出到 SQL Server 上的本地驱动器,但在将结果导出到外部服务器(或共享驱动器位置)时遇到了困难。
我只能使用BCP
命令提示符中的命令,但功能有限。此外,该BCP
命令仅导出 ASCII。我想导出为 UTF-8 BOM 格式。
我已经实现了以下方法将结果导出为 csv:
sp_configure 'xp_cmdshell'
已经打开
使用
BCP
SQL Server 中的命令:declare @sql varchar(8000) select @sql = 'BCP "EXEC [dbName].[dbo].[StoredProcedureName] @AreaID=NULL" queryout "\\serverlocation\Test\FileExport_Test_1.CSV"-T -S SourceServerName -c -t,' exec master..xp_cmdshell @sql
导出到本地服务器位置时,此命令将导出 csv
当我执行上述命令时出现此错误:
错误 = [Microsoft][SQL Server Native Client 11.0]无法打开 BCP 主机数据文件
从命令提示符中使用 BCP 命令。
C:\Windows\System32>BCP "EXEC [dbName].[dbo].[StoredProcedureName] @AreaID=NULL" queryout "\\serverlocation\Test\FileExport_Test_1.CSV"-T -S SourceServerName -c -t
该文件被导出到外部服务器位置,但我不想使用此方法,因为我想使用动态文件名并将动态参数值传递给存储过程。
使用 Powershell:
PS SQLSERVER:\> $filename = "\\serverlocation\Test\FileExport_Test_1" Invoke-Sqlcmd -Query "EXEC [dbName].[dbo].[StoredProcedureName] @AreaID=NULL" -ServerInstance "SourceServerName" | Export-Csv -Path "$filename.csv" -NoTypeInformation
我收到以下错误:
Export-Csv:无法打开文件,因为当前提供程序(Microsoft.SqlServer.Management.PSProvider\SqlServer)无法打开文件。
第 3 行,字符:1- 导出-Csv -Path“$filename.csv”-NoTypeInformation
-
- CategoryInfo:InvalidArgument:(:) [Export-Csv],PSInvalidOperationException
- FullyQualifiedErrorId:ReadWriteFileNotFileSystemProvider,Microsoft.PowerShell.Commands.ExportCsvCommand
将 SSRS 中的 CSV 导出为 Windows 共享。但 CSV 在带有引号的字段周围添加了双引号。因此,无法使用此方法导出 CSV
我不太熟悉 SSIS,学习 SSIS 需要一些时间,而且我必须在很短的时间内提供解决方案。:(
请帮忙