Азбука BCP
Страница 6. Примечания автора


 

Примечания автора

1. При передаче всех таблиц базы данных вы можете использовать возможности системной хранимой процедуры: sp_MSforeachtable, например:


USE Northwind
GO
sp_MSforeachtable @Command1="master..xp_cmdshell 'BCP Northwind.dbo.?
out D:\?.out -S ServerName -U sa -P -n' "
GO

Можно конечно обойтись и без sp_MSforeachtable, тогда стоит использовать конструкцию на подобии представленной ниже, которая создаёт файлы в csv-формате:


DECLARE @tbl varchar( 40)
DECLARE TableCursor CURSOR FOR
select name from sysobjects where type = 'U' order by name
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @tbl
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @cmd varchar( 250)
select @cmd = 'bcp Northwind.dbo.' + @tbl + ' out ' + 'c:\export\' +
@tbl + '.csv -S ' + @@servername + ' -c -t, -U sa'
select @cmd = 'master..xp_cmdshell ''' + @cmd + ''''
exec( @cmd)
select @cmd
FETCH NEXT FROM TableCursor INTO @tbl
END
CLOSE TableCursor
DEALLOCATE TableCurso

2. При передаче больших по размеру таблиц, можно получить дополнительный выигрыш во времени за счёт использования параметра BCP: [-b batchsize]. Подробнее об этом параметре можно прочитать в SQL Server Books Online, поиск по ключевым словам: Batch Switches.

 
« Предыдущая статья   Следующая статья »