bcp queryout SQL Server

时间:2017-07-24 18:28:48

标签: sql-server bcp

我想在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,

有人能指出我正确的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果查看bcp生成的文本文件,则会注意不会导出列名。只导出数据。

link Alex posted描述了一种将列名添加到输出的方法。实际上,您使用UNION将字段作为第一个数据列添加到数据中。我建议不要这样做,因为它需要将所有字段作为字符串转换为复杂查询。

步骤1输出列

我会将带有所需列名的文本文件输出到一个文本文件中。让我们调用该文件" columnnames.csv"。如果需要,您甚至可以创建固定列名文件的存储库。

步骤2输出数据

使用bcp像以前一样输出数据。让我们调用那个输出" data.csv"

步骤3合并两个文件

您可以使用此简单批处理命令组合数据

copy /b columnnames.csv+data.csv combined.csv

type columnnames.csv data.csv > combined.csv

有用的资源

如何query against the schema to get the column names