这是BCP的规定用法
--导出
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out c:\table1.xls -c -q -S 实例名 -U 用户名 -P 口令
--导入
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:\table1.xls -c -q -S 实例名 -U 用户名 -P 口令
--导出
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out c:\table1.xls -c -q -S 实例名 -U 用户名 -P 口令
--导入
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:\table1.xls -c -q -S 实例名 -U 用户名 -P 口令
DECLARE @FileName varchar(30), @bcpCommand varchar(2000)
SET @FileName = 'F:\temp1.txt'
SET @bcpCommand = 'bcp "SELECT ID,Name FROM MyTable" queryout '
SET @bcpCommand = @bcpCommand + @FileName + ' -c -q -S "my_Svrl" -U "sa" -P ""'
--select @bcpCommand
EXEC master..xp_cmdshell @bcpCommand
问题是将
SET @bcpCommand = 'bcp Mydatabase "SELECT ID ,Name FROM MyTable" queryout'
改为
SET @bcpCommand = 'bcp Mydatabase.dbo.MyTable out'
则正常执行,可见与空格无关。
SET @bcpCommand = 'bcp Mydatabase "SELECT ID ,Name FROM MyTable" queryout'
改成
SET @bcpCommand = 'bcp "SELECT ID ,Name FROM Mydatabase..MyTable" queryout'