BCP实用程序错误

时间:2015-08-17 14:39:38

标签: sql sql-server

select @sql='select * from application.dbo.'+@TableName1+''+char(13)+char(10)+'except'+char(13)+char(10)+'select * from '+'application_check'+'.dbo.'+@TableName1+''

exec sp_executesql  @sql

select @script='bcp sp_executesql  '+@sql+'queryout "D:\SNB\Test\datacheck.txt" -T -c -t "|"'

EXEC master..xp_cmdshell @script
  

错误:尝试将输出导出到文件时,复制方向必须为“in”,“out”或“format”

2 个答案:

答案 0 :(得分:2)

一些修复:

  1. 从sql查询中删除了所有不必要的连接。
  2. SQL查询必须包含在双引号"Sql Query"
  3. 不需要执行sp_executesql。
  4. 解决方案:

    select @sql='select * from application.dbo.'+ QUOTENAME(@TableName1)
               +'  except  select * from application_check.dbo.'+ QUOTENAME(@TableName1)
    
    SET @script='bcp "'+@sql+'" queryout "D:\SNB\Test\datacheck.txt" -T -c -t "|"'
    
    EXEC master..xp_cmdshell @script
    

答案 1 :(得分:0)

select @sql='select * from application.dbo.'+@TableName1+''+char(13)+char(10)+'except'+char(13)+char(10)+'select * from '+'application_check'+'.dbo.'+@TableName1+''

-- exec sp_executesql  @sql

select @script='bcp "'+@sql+'" queryout "D:\SNB\Test\datacheck.txt" -T -c -t "|"'

EXEC master..xp_cmdshell @script

您无需使用sp_executesql。您可以使用查询本身。