AWS RDS SQL Сервер: экспорт больших данных в файл CSV из хранимой процедуры - PullRequest
0 голосов
/ 13 марта 2020

Миграция с размещенного SQL сервера на AWS RDS, который является управляемой службой (SaaS), мы не смогли включить xp_cmdshell.

Наше приложение java в настоящее время использует хранимую процедуру, которая использует xp_cmdshell для выполнения BCP.exe ( Программа группового копирования - это инструмент командной строки, используемый для импорта или экспорта данных в Microsoft SQL Сервер ) для экспорта больших данных в файлы 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?

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

Можем ли мы использовать команду T- SQL для экспорта результата запроса в файл CSV и размещения его на S3?

Нет. Есть T SQL альтернативы команде BCP, но ТОЛЬКО для ИМПОРТА.

Лучше всего написать программу, которая возвращает данные из SQL с помощью оператора SELECT и записывает файл Вы сами - по сути, домашняя замена BCP.

Ничто из коробки не может выступать в качестве замены BCP, поскольку все функции, не относящиеся к групповым функциям BCP, предназначены либо для программ c, либо для использования ИЛИ только для импорта.

0 голосов
/ 30 апреля 2020

Ответ - использовать BCP.exe внутри пакета служб SSIS, используя сервер SQL, используемый экземпляром служб SSIS.

...