使用BCP

时间:2018-06-01 01:08:42

标签: sql-server bcp

我刚开始学习使用SQL Server的BCP,并且我使用它来查询SQL Server数据库并创建.csv文件。我可以使用此命令创建文件没有问题:

bcp" SELECT' ID' FROM [数据库]。[dbo]。[table]" queryout C:\ DeskTop \ test.csv -c -t,-T -S

但是,我需要运行更高级的查询,并且我遇到了问题。似乎查询被解析并且部件正在尝试执行。我收到错误说没有找到FROM命令。这是我尝试在BCP命令中运行的查询:

SELECT REPLICATE(0, 10-LEN(t.[CustId])) + CAST(t.[CustId] as       
                                                 nvarchar) as CustId
   ,(CASE WHEN t.[DisclId] = 'ECONSENT' THEN 'eConsent'
          WHEN t.[DisclId] = 'OLACC' THEN 'OLACC' END) as DisclId
   ,CONVERT(DATE,t.[AgreeDateTime],23) AS AgreeDateTime
  ,t.[Vers]
  ,'0' as ACNT_ID
  ,'Accepted' as Status_Desc
  ,'0001-01-01' as Last_Delay_Date
  ,'0' as Delay_Count
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY CustId, DisclId 
      ORDER BY AgreeDateTime DESC) AS RowNumber 
FROM [DATABASE].[dbo].[TABLE]) AS t
WHERE t.RowNumber = 1
ORDER BY CustId

使用BCP命令运行此查询的正确语法是什么?

提前谢谢

1 个答案:

答案 0 :(得分:1)

bcp最喜欢“内联查询”,其中可以将查询串联到cmd提示的一行中。在几种情况下,我的SQL语句对于该笔交易而言太大。您也许可以摆脱它,但是如果不能,请创建一个视图。

使用视图输出。那就是我所做的。

为此,这是我输出视图的方式:

bcp.exe <database>.dbo.<VIEW NAME> out "Drive:\Folder Path\file.csv" -T -S localhost -c -t"|" -C65001

但是,要回答您的紧迫问题,请用双引号将上述示例中的视图名称替换为查询。

这将为您提供启用UTF-8的竖线分隔CSV。