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

标签 mysql tsql command-prompt visual-studio-2017 export-to-csv

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

我读到,使用 bcp 和“queryout”是实现此目标的最佳方法。我的代码如下,但它仍然出现以下错误:“'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'' != '' ''

关于mysql - 将 SQL 查询结果从 Microsoft Visual Studio 导出到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143711/

相关文章:

git - 如何切换到 "Use Git from command prompt?"

mysql - 设计关系型数据库,有一种若隐若现的厄运感

php - MySQL自定义时间戳值

mysql - 如何仅使用联接而不使用子查询来创建此查询?

sql - 如何在SQL中从XML中获取指定的节点

sql - 同一张表上的两个外键显示父字段

windows - 如何使用 findstr 搜索多个文件

Windows 查找命令结果到文件

mysql - 您可以浏览正在运行的 VoltDB 数据库吗?

sql-server-2008 - SELECT 语句按时间过滤