从托管SQL Server迁移到作为托管服务(SaaS)的AWS RDS,我们无法启用xp_cmdshell
。
我们的Java应用程序当前使用存储过程,该存储过程使用xp_cmdshell
执行BCP.exe(大容量复制程序是用于根据Microsoft SQL Server导入或导出数据的命令行工具)来导出大数据到CSV文件。
并且由于无法在RDS上启用xp_cmdshell
,因此我们无法使用它来执行BCP。存储过程代码:
declare @bcp_header varchar(8000)
declare @bcp varchar(8000)
declare @bcpCopy varchar(8000)
declare @deleteFile varchar(300)
select @bcp_header = 'BCP "' + @header_select + '" queryout ' + @pathAndFileName +'.csv -c -C 1252 -t; -T '
select @bcp = 'BCP "' + @sql_export + '" queryout '+ @pathAndFileName +'_data.csv -c -C 1252 -t; -T '
select @bcpCopy = 'TYPE '+ @pathAndFileName +'_data.csv >> '+ @pathAndFileName +'.csv'
select @deleteFile = 'DEL '+@pathAndFileName +'_data.csv'
exec master..xp_cmdshell @bcp_header
exec master..xp_cmdshell @bcp
exec master..xp_cmdshell @bcpCopy
exec master..xp_cmdshell @deleteFile
我们可以使用T-SQL命令将查询结果导出到CSV文件并将其托管在S3上吗?
我们可以使用T-SQL命令将查询结果导出到CSV文件并将其托管在S3上吗?
不。 BCP命令有TSQL替代方法,但仅适用于IMPORT。
[您最好的选择是编写一个程序,该程序通过某种SELECT语句从SQL返回数据并自行写出文件-bascailly是BCP的自家替代品。
开箱即用,没有什么可以替代BCP,因为所有非BCP批量功能都是用于程序设计或仅用于导入。