2013-10-23 73 views
0

我试图在SSIS中执行BCP将查询结果导出到CSV文件为几个不同的表。然而,由于某种原因,我不断收到解析错误,当我试图把下列参数为BCP EXEC:SSIS BCP执行与查询

"SELECT * from [email protected][User::Table] " queryout C:\users\MSSQLSERVER\Downloads\@[User::Table].csv -c -t, -T 

当我与这些参数执行BCP(改变变量到现有的表名),一切正常。我试图删除参数的几个部分,我仍然得到以下错误

Attempt to parse the expression ""SELECT * from [email protected][User::Table] " queryout C:\users\MSSQLSERVER\Downloads\@[User::Table].csv -c -t, -T" failed. The expression might contain an invalid token, an incomplete token, or an invalid element. It might not be well-formed, or might be missing part of a required element such as a parenthesis. 

我的论点有什么问题?

回答

1

你的表情不正确。

“从myDB.dbo SELECT * @ [用户::表]。” queryout C:\用户\ MSSQLSERVER \下载\ @ [用户::表]的.csv -c -t,-T

SSIS表达式语言不像PowerShell,它将在字符串中看到变量。相反,我们回到了字符串连接的石器时代。您还可以对付逃避斜线和双引号所以你的最终表现将看起来像

"""SELECT * from myDB.dbo." 
+ @[User::Table] 
+ """ queryout C:\\users\\MSSQLSERVER\\Downloads\\" 
+ @[User::Table] 
+ ".csv -c -t, -T" 

我发现我最成功的,当我建立变量复杂的字符串,然后永远只引用内置变量在表达任务与试图在那里建立它。这样我就可以在包中放置断点或使用我的变量值返回信息事件。使调试过程更加痛苦。

bcp reference