3

我正在尝试使用 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 | 查询} {在 | 出| 查询 | 格式} 数据文件 [-m maxerrors] [-f 格式文件] [-e errfile] [-F firstrow] [-L lastrow] [-b batchsize] [-n 本机类型] [-c 字符类型] [-w 宽字符类型] [-N 保留非文本本机] [-V 文件格式版本] [-q 引用标识符] [-C 代码页说明符] [-t 字段终止符] [-r 行终止符] [-i 输入文件] [- o outfile] [-a packetsize] [-S 服务器名称] [-U 用户名] [-P 密码] [-T 可信连接] [-v 版本] [-R 区域启用] [-k 保持空值] [- E 保持标识值] [-h "load hints"] NULL [-h "load hints"] NULL

请帮忙。

4

5 回答 5

9

这个问题很老了,但我遇到了同样的问题。您需要将整个命令驻留在一行中。删除@Query 和@Cmd 中的所有换行符。

于 2012-08-01T22:07:57.080 回答
2

我认为您的 -S 开关后需要一个空格。此外,一般来说,在调试复杂的东西时,会降低复杂性,直到你能确定问题出在哪里。在这种情况下,您可以一次移除每个开关(或移除所有开关以开始)以确定是否是导致问题的原因。

于 2010-09-23T19:55:13.217 回答
1

SET @Cmd = 'bcp "' + REPLACE(REPLACE(REPLACE(,CHAR(9),CHAR(32)),CHAR(13),CHAR(32)),CHAR(10),'')@Query + ' " queryout "' + @Path + '" -c -S' + @ServerName + '-U' + @UserName + '-P' + @Password + '-t' + @Delimiter + ''

于 2015-04-01T14:46:47.820 回答
0

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

于 2010-09-23T20:42:41.230 回答
-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]'

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

谢谢

于 2016-10-13T10:16:56.923 回答