0

マイクロソフトのVisual Studioからテキストファイルへの結果。私は(私は正常に行っている)MySQLデータベースを照会しようとしているし、結果をテキストファイルに出力しています。エクスポートSQLクエリは、私は私の状況に固有の答えを見つけるためにオンラインで過去の時間を探してきましたが、どれも私の質問を解決していない

この目標を達成するための最良の方法は、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 
+0

エラーがそれを言うにフォーマットする必要があります方法です。 L-FAIL-MSGの周りに2つの一重引用符を付けることをお勧めします(これらは二重引用符ではなく、一重引用符2つです)。彼らのように見えるかもしれませんが、そこにも他の問題があります。 – GandRalph

答えて

0

結果セットをファイルにプッシュするとき、bcpはいつも私にとってうまくいったので、わかりました。

ここでの大きな問題は、あなたが@logtextクエリ文字列の書式を設定している方法です。一重引用符を前に2つ追加することで、一重引用符をエスケープする必要があります。最初のインスタンスで

WHERE category = 'L-FAIL-MSG' 

AND ''value'' != ' ' 

、あなたはそれを文字列と、その後リテラルとフォーマットせずに、別の文字列を、与えている:ここではあなたのための問題スポットのカップルです。 2番目の引用符を追加してエスケープし、L-FAIL-MSGを文字列リテラルとして扱うか、L-FAIL-MESSAGEをその文字列に可変プッシュする必要があります。

番目のインスタンスは、あなたが再びquote-を免れていませんでしたので、それらか何かを連結するために、任意の演算子なしに別の文字列に続く文字列であるように見える、あなたに問題を与えるだろう。ここで

は、それが

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

AND ''value'' != '' '' 
関連する問題

 関連する問題