正在将 SQL 查询结果从 Microsoft Visual Studio 导出到文本文件

Exporting SQL Query Results to Text File From Microsoft Visual Studio

过去一个小时我一直在网上寻找适合我的情况的答案,但 none 已经解决了我的问题。我正在尝试查询 MySQL 数据库(我已成功完成),然后将结果输出到文本文件。

我读到使用 bcp 和 "queryout" 是实现此目标的最佳方法。我的代码在下面,但它继续给我以下错误:"Incorrect Syntax Near 'L'."。

我该如何解决这个问题?有没有更简单的方法可以将我的结果从 Visual Studio 导出到文本文件?

set @logtext =
'"
SELECT category, occurTime, sourceKeyName, recipe, "value", formulaName, startTime, endTime , BatchID 


FROM dbo.Batch
LEFT JOIN dbo.BatchHeader ON Batch.uniqueBatchID = BatchHeader.uniqueBatchID
LEFT JOIN dbo.RecipeHeader ON BatchHeader.uniqueBatchID = RecipeHeader.uniqueBatchID
LEFT JOIN dbo.BReportEvent ON RecipeHeader.uniqueBatchID = BReportEvent.uniqueBatchID
LEFT JOIN dbo.RecipeFormula ON BReportEvent.uniqueBatchID = RecipeFormula.uniqueBatchID

WHERE category = 'L-FAIL-MSG'

AND occurTime  >= DATEADD(day, -1, GETDATE())
AND "value" != ' '
"'  

DECLARE @logtext varchar(1000)
DECLARE @cmd varchar(2000)

SET @cmd = 'bcp ' + @logtext + ' queryout "C:\Users\anduaguibe\Documents\Visual Studio 2017\Projects\HelloWorld\HelloWorld\upstreamData.txt" -U uID -P uPass -c'

EXEC master...XP_CMDSHELL @cmd

在将结果集推送到文件时,bcp 一直对我有用,据我所知,这很好。

这里更大的问题是如何格式化 @logtext 查询字符串;您需要通过在它之前添加第二个引号来转义单引号。这里有几个问题点供您参考:

WHERE category = 'L-FAIL-MSG'

AND ''value'' != ' '

首先,您给它一个字符串,然后是一个文字,然后是另一个字符串,没有任何格式。 您需要添加第二个引号以将其转义并将 L-FAIL-MSG 视为字符串文字,或者使 L-FAIL-MESSAGE 成为将其推入字符串的变量。

第二个实例会给您带来问题,因为您再次没有转义引号 - 它似乎是一个字符串后跟另一个字符串,没有任何运算符来连接它们或任何东西。

以下是可能需要格式化的方式

WHERE category = ''L-FAIL-MSG''

AND ''value'' != '' ''