在执行BCP时出错:BCP主机文件必须至少包含一列

时间:2016-02-08 07:20:21

标签: sql-server tsql bcp

我想在我的数据库中使用BCP。为此,我写了这个查询:

EXEC xp_cmdshell 'bcp "SELECT rtrim(ltrim(anumber)),rtrim(ltrim(bnumber)),rtrim(ltrim(duration))  FROM [CDRDB].[dbo].[CDRTABLE]"  queryout d:\myOUT.txt -S . -UCDRLOGIN -Pbeh1368421 -f "d:\myFORMAT.fmt"  '

格式文件myFormat.fmt详细信息如下:

9.0
3
1 SQLNCHAR 0 5 "," 1 ANUMBER "" 
2 SQLNCHAR 0 10 "," 2 BNUMBER ""
3 SQLNCHAR 0 10 "\r\n" 3 DURATION ""

当我运行BCP命令时,我收到此错误:

enter image description here

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您有一个-S .开关。我不认为这对SQL Server来说已经足够了。在SSMS中执行以下操作:

SELECT @@SERVERNAME;

并使用此查询的输出而不是.

其次,是否真的需要格式文件?您可以改为提供以下开关:-w -t, -r\r\n

DECLARE @stmt VARCHAR(8000)='bcp "SELECT rtrim(ltrim(anumber)),rtrim(ltrim(bnumber)),rtrim(ltrim(duration)) FROM [CDRDB].[dbo].[CDRTABLE]" queryout "d:\myOUT.txt" -UCDRLOGIN -Pbeh1368421 -w -t, -r\r\n -S ' + @@SERVERNAME;
EXEC master.sys.xp_cmdshell @stmt;