我已经浏览了整个互联网,似乎找不到解决这个问题的方法。
我试图通过使用sqlcmd和windows批处理的组合将查询结果输出为CSV。这是我到目前为止所做的:
sqlcmd.exe -S %DBSERVER% -U %DBUSER% -P %DBPASS% -d %USERPREFIX% -Q "SELECT Username, UserDOB, UserGender FROM TABLE" -o %USERDATA%\%USERPREFIX%\FACT_BP.CSV -h-1 -s","
这里有什么我想念的吗?某些设置只查看查询结果的第一列?
任何建议都将是一个巨大的帮助 - 我迷失了。
答案 0 :(得分:0)
以下是MSQ在SQLCMD上的参考页面。
http://technet.microsoft.com/en-us/library/ms162773.aspx
我将此命令放在C:\ temp中的批处理文件中,作为go.bat。
sqlcmd -S(local) -E -dmaster
-Q"select cast(name as varchar(16)), str(database_id,1,0), create_date from sys.databases"
-oc:\temp\sys.databases.csv -h-1 -s,
注意我硬编码了文件名并删除了字段分隔符周围的“”。
我得到了预期的输出。
命令不喜欢系统变量或其他错误。请尝试我的代码作为基线测试。它适用于SQL 2012。
此外,行数始终转储到文件中。您必须清除文件中的内容。这就是为什么我不将SQLCMD用于ETL。
为什么不使用BCP?
我在网站上写了几篇文章。