BCP更改标题列顺序

时间:2016-09-30 22:22:06

标签: sql-server csv sql-server-2012 export-to-csv bcp

我正在尝试运行以下查询:

BCP "select * from myTable " queryout C:\Temp\myTable.csv -t, -c -T -S

表:

Process  Verb   Match
P1       V1     FALSE
P2       V2     TRUE

CSV:

Match    Process    Verb
P1       V1         FALSE
P2       V2         TRUE

出于某种原因,BCP按字母顺序对标题行进行排序。

上面的命令曾经在SQL Server 2008 R2中运行得非常好,但由于某些原因它在SQL Server 2012中搞乱了......我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

也许您可以尝试创建一个查询,按照<script src="https://maps.googleapis.com/maps/api/js"></script> <div id="map-canvas"></div>中的顺序选择列中的列,如下面的脚本中所示:

INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION

答案 1 :(得分:0)

我自己想通了。它不是BCP,它是SQl中的Syscolumns表引起的。

我正在从sys.syscolumns中读取列标题。在Sql 2008 R2中,sys.syscolumns中的id字段对于表的每一列都是唯一的,它在Sql 2014中提供相同的值。

所以,当我在Sql 2008&amp; 2014年单独

SELECT distinct name,
          ROW_NUMBER() OVER ( ORDER BY id) AS RowNumber FROM    sys.syscolumns 
   WHERE   id = OBJECT_ID('MyDB.dbo.MyTbl')

在Sql 2008中,它提供按id排序的数据,该数据对于每列是唯一的。但是在Sql 2014中,由于所有列的id都相同,因此它会按字母顺序对结果进行排序。

现在,我将查询更改为

SELECT distinct name,
     ROW_NUMBER() OVER ( ORDER BY colid) AS RowNumber FROM sys.syscolumns
WHERE id = OBJECT_ID('MyDB.dbo.MyTbl')