我刚开始学习使用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命令运行此查询的正确语法是什么?
提前谢谢
答案 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。