Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server bcp查询SQL Server的自定义列名_Sql Server_Bcp - Fatal编程技术网

Sql server bcp查询SQL Server的自定义列名

Sql server bcp查询SQL Server的自定义列名,sql-server,bcp,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 "selec

我想重命名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,

有人能告诉我正确的解决方案吗?

如果您查看由
bcp
生成的文本文件,您会注意到列名没有导出。仅导出数据

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

步骤1:输出列 我会将带有所需列名的文本文件输出到一个文本文件中。让我们将该文件称为“columnnames.csv”。如果需要,您甚至可以创建固定列名文件的存储库

步骤2:输出数据 使用
bcp
像以前一样输出数据。让我们将该输出称为“data.csv”

步骤3合并两个文件 您可以使用这个简单的批处理命令来组合数据

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

有用的资源
如何

为什么希望列具有别名(重命名)?也许您希望列名在文件中显示为标题?看看这个:你需要告诉你已经尝试了什么,什么以及为什么你不喜欢它。您当前提供的示例毫无意义,让我们猜测。
SELECT
查询中的列名对生成的文件没有影响。因为存储在文件中的是数据,而不是查询本身。正如@Alex所说,除非您想将列名作为输出的一部分,重命名或使用别名也无济于事。我只是想知道你发布的命令是否可以用于查询。在table_name中,您需要完全限定它,即ServerName.SchemaName.TableName。您尝试过我建议的解决方案吗?
type columnnames.csv data.csv > combined.csv