我想在bcp queryout命令的select子句中重命名列名。我尝试了以下变体,但没有一个工作。我想分别将第一列和第三列重命名为email_address和id。
我在批处理脚本中调用bcp命令。
bcp "select email as 'email_address', first_name, p_id as 'id' from table_name" queryout 15Days.txt -c -Sservername -Uusername -Ppassword -t,
bcp "select email as [email_address], first_name, p_id as [id] from table_name" queryout 15Days.txt -c -Sservername -Uusername -Ppassword -t,
bcp "select email 'email_address', first_name, p_id 'id' from table_name" queryout 15Days.txt -c -Sservername -Uusername -Ppassword -t,
bcp "select email email_address, first_name, p_id id from table_name" queryout 15Days.txt -c -Sservername -Uusername -Ppassword -t,
有人能指出我正确的解决方案吗?
答案 0 :(得分:1)
如果查看bcp
生成的文本文件,则会注意不会导出列名。只导出数据。
link Alex posted描述了一种将列名添加到输出的方法。实际上,您使用UNION将字段作为第一个数据列添加到数据中。我建议不要这样做,因为它需要将所有字段作为字符串转换为复杂查询。
我会将带有所需列名的文本文件输出到一个文本文件中。让我们调用该文件" columnnames.csv"。如果需要,您甚至可以创建固定列名文件的存储库。
使用bcp
像以前一样输出数据。让我们调用那个输出" data.csv"
您可以使用此简单批处理命令组合数据
copy /b columnnames.csv+data.csv combined.csv
或
type columnnames.csv data.csv > combined.csv