这个bcp实用程序有什么问题?

时间:2010-09-23 18:01:57

标签: sql database sql-server-2005 tsql bcp

我正在尝试使用bcp实用程序将数据导出到文本文件中?我无法弄清楚我在这里做错了什么: -

Declare @Cmd nvarchar(1000)
Declare @Query nvarchar(1000)
Declare @Path nvarchar(500)
Declare @ServerName nvarchar(500)
Declare @UserName nvarchar(50)
Declare @Password nvarchar(50)
Declare @Delimiter char(1)

SET @Path = 'c:\abc.txt'
SET @ServerName = '10.10.10.10\instance1'
Set @UserName = 'sa'
Set @Password = '123456'
Set @Delimiter = '!'

SET @Query = 'SELECT [ID]
          , NULL
          ,[NAME]
          ,[STREET1] + '' '' + [STREET2] as [Address]
          ,[CITY] + '' '' + [PROVINCE] + '' '' + [POSTAL] as City
          ,[PHONE] 
          ,[FAX]
          ,''Title'' as [Title]
          ,[Country]
FROM [temp01]'
SET @Cmd = 'bcp "' + @Query + '" queryout "' +  @Path +
         '" -c -S' + @ServerName + ' -U' + @UserName + ' -P' + 
        @Password + ' -t' + @Delimiter + ''
EXEC master..xp_cmdshell @Cmd

它没有将任何数据写入文件。在结果框中,我得到了这个输出: -

用法:bcp {dbtable |查询} {in |出| queryout |格式}数据文件   [-m maxerrors] [-f formatfile] [-e errfile]   [-F firstrow] [-L lastrow] [-b batchsize]   [-n native type] [-c character type] [-w wide character type]   [-N保持非文本原生] [-V文件格式版本] [-q引用标识符]   [-C代码页说明符] [-t字段终止符] [-r行终止符]   [-i inputfile] [-o outfile] [-a packetsize]   [-S服务器名称] [-U用户名] [-P密码]   [-T可信连接] [-v版本] [-R区域启用]   [-k保持空值] [-E保持标识值]   [-h“加载提示”] 空值 [-h“load hints”] NULL

请帮忙。

5 个答案:

答案 0 :(得分:6)

这个问题很老了,但我遇到了同样的问题。您需要整个命令驻留在一行上。取出@Query和@Cmd中的任何换行符。

答案 1 :(得分:2)

我认为你的-S开关后需要一个空格。此外,通常,在调试复杂的东西时会降低复杂性,直到您可以确定问题所在。在这种情况下,您可以一次删除一个开关(或删除所有开关)以确定是否导致问题。

答案 2 :(得分:1)

SET @Cmd ='bcp“'+ REPLACE(REPLACE(,REP(9),CHAR(32)),CHAR(13),CHAR(32)),CHAR(10),'')@查询+'“查询输出”'+ @Path +          '“ - c -S'+ @ServerName +' - U'+ @UserName +' - P'+         @Password +' - t'+ @Delimiter +''

答案 3 :(得分:0)

您必须提供数据库。您只将实例定义为一个表但没有数据库。尝试更改您的选择状态,例如:...来自[yourDB]。[temp01] ...

答案 4 :(得分:-1)

在我的数据库中尝试时发现了同样的问题 因此我得出结论 您正在使用

SET @Query = 'SELECT [ID]
           , NULL
           ,[NAME]
           ,[STREET1] + '' '' + [STREET2] as [Address]
           ,[CITY] + '' '' + [PROVINCE] + '' '' + [POSTAL] as City
           ,[PHONE] 
           ,[FAX]
           ,''Title'' as [Title]
           ,[Country] FROM [temp01]'

如果你使用

SET @Query = 'SELECT [ID], NULL ,[NAME],[STREET1] + '' '' + [STREET2] as [Address],[CITY] + '' '' + [PROVINCE] + '' '' + [POSTAL] as City,[PHONE],[FAX],''Title'' as [Title],[Country] FROM [temp01]'

工作正常查询中没有任何新行 只是因为它不接受中间的空间。

由于

相关问题