home


bcp data from all tables in database
Author Nigel Rivett


This will execute a bcp on all tables in the database

set nocount on
create table #a (name varchar(128), id int identity)
insert #a (name)  select name from sysobjects where xtype = 'U'
declare @id int, @cmd varchar(2000)
select @id = 0
while @id < (select max(id) from #a)
begin
	select @id = min(id) from #a where id > @id
	select @cmd = 'bcp ' + db_name() + '..' + name + ' out "c:\bcp\' + name + '.bcp" -S' + @@servername + ' -N -T'
	from #a where id = @id
	exec master..xp_cmdshell @cmd
	select @cmd
end
drop table #a


This will give a resultset of the bcp commands which you can copy to a query window and execute.

	select 'exec master..xp_cmdshell ''bcp ' + db_name() + '..' + name + ' out "c:\bcp\' + name + '.bcp" -S' + @@servername + ' -N -T'''
	from sysobjects where xtype = 'U'


This will give a resultset of the bcp commands which you can copy to a .bat file and run.

	select 'bcp ' + db_name() + '..' + name + ' out "c:\bcp\' + name + '.bcp" -S' + @@servername + ' -N -T'
	from sysobjects where xtype = 'U'


For bcp in change out to in.



For identity columns

	select 'exec master..xp_cmdshell ''bcp ' + db_name() + '..' + o.name + ' in "c:\bcp\' + o.name + '.bcp" -S' + @@servername + ' -N -T'
		+ case when c.id is null then '' else ' -E' end + ''''
	from sysobjects o 
		left join (select distinct id from syscolumns where status & 0x80 <> 0) c
			on o.id = c.id
	where o.xtype = 'U'




home