【发布时间】:2020-03-13 08:53:19
【问题描述】:
从托管的 SQL Server 迁移到作为托管服务 (SaaS) 的 AWS RDS,我们无法启用 xp_cmdshell。
我们的 Java 应用程序当前使用一个使用 xp_cmdshell 执行 BCP.exe 的存储过程(Bulk Copy Program 是一个命令行工具,用于针对 Microsoft SQL Server 导入或导出数据)将大数据导出到 CSV 文件。
由于xp_cmdshell不能在RDS上启用,我们不能用它来执行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 上吗?
【问题讨论】:
-
如果这是一次性要求,您可以使用 SQL Server Management Studio。运行您的 SELECT 查询,然后右键单击结果集中的某处并选择将结果另存为...。您可以将其保存为格式正确的 CSV 文件。
-
@O.Jones 是的,但这不是一次性的要求。我正在考虑开发一个 SSIS 包..
标签: sql-server amazon-web-services amazon-s3 amazon-rds sqlbulkcopy