我们需要将SELECT查询结果写入csv文件.如何在sql Server 2008 r2中使用T-sql?我知道它可以在SSIS中完成,但由于某些原因,我们没有这个选项.
我尝试在下面的文章中使用建议的proc,但是当我运行proc时,sql抱怨无法运行在此proc中调用的sys.sp_OACreate和sys.sp_OADestroy.
您知道我们如何打开这些组件或知道使用T-sql写入文件的更好方法吗?
提前致谢.
解决方法
使用
BCP utility
bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" queryout "D:\MyTable.csv" -c -t,-S SERVERNAME -T
-c参数指定字符输出,而不是sql的本机二进制格式;默认为制表符分隔值,但-t将字段终止符更改为逗号. -T指定Windows身份验证(“可信连接”),否则使用-U MyUserName -P MyPassword.
默认情况下,这不会导出列标题.您需要使用UNION ALL作为标头
要么
使用sqlCMD
sqlCMD -S SERVERNAME -E -Q "SELECT Col1,Col3 FROM MyDatabase.dbo.MyTable" -s "," -o "D:\MyData.csv"
要么
使用Powershell
这是一个link to an article.如果你最终使用它,你可能想在Export-Csv $extractFile之后附加-notype来摆脱输出文件中不必要的列.