我正在尝试使用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
请帮忙。
答案 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]'
工作正常查询中没有任何新行 只是因为它不接受中间的空间。
由于