Sql server 使用BCP运行SQL查询

Sql server 使用BCP运行SQL查询,sql-server,bcp,Sql Server,Bcp,我刚刚开始学习使用SQL Server的BCP,我正在使用它查询SQL Server数据库并创建.csv文件。使用以下命令,我可以毫无问题地创建文件: bcp从[database].[dbo].[table]查询C:\DeskTop\test.csv-C-t,-t-S中选择“ID” 然而,我需要运行一个更高级的查询,我有问题。看起来查询正在被解析,部分正在尝试执行。我收到错误消息说从命令找不到。以下是我试图在BCP命令中运行的查询: SELECT REPLICATE(0, 10-LEN(t.[C

我刚刚开始学习使用SQL Server的BCP,我正在使用它查询SQL Server数据库并创建.csv文件。使用以下命令,我可以毫无问题地创建文件:

bcp从[database].[dbo].[table]查询C:\DeskTop\test.csv-C-t,-t-S中选择“ID”

然而,我需要运行一个更高级的查询,我有问题。看起来查询正在被解析,部分正在尝试执行。我收到错误消息说从命令找不到。以下是我试图在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命令运行此查询的正确语法是什么


提前感谢您

bcp最喜欢内联查询,查询可以连接成一行,以显示cmd提示符。我有几种情况下,我的SQL语句对于该交易来说太大了。您可能可以不受影响,但如果不行,请创建一个视图

使用视图进行输出。我就是这么做的

为此,以下是我如何输出视图:

bcp.exe <database>.dbo.<VIEW NAME> out "Drive:\Folder Path\file.csv" -T -S localhost -c -t"|" -C65001
但是,要回答您的直接问题,请将上面示例中的视图名称替换为您的查询,并用双引号括起来


这将为您提供一个启用UTF-8的管道分隔CSV。

您的最终BCP查询是什么样子的。希望您在查询中嵌入的任何内容都使用了单引号。这是我没有做的一件事。我试试看,我发现了我的问题。我用引号将查询包装起来,这是我所需要的,但通过键入并逐段测试,这意味着我向select语句中一次添加一个项,然后运行BCP命令,我可以毫无问题地运行它。在我复制和粘贴查询中的大部件之前。