none
使用BCP将表导出为文本文件时如何加入表头? RRS feed

  • 问题

  • 大家好。

    我要用BCP将数据库中的表导出为CSV文件,现在用的是这个命令:

    EXEC master..xp_cmdshell 'bcp "SUP..Merchant" out c:\dt.csv -c -t, -Sxxx -Uxxx -Pxxx'

    这样能成功导出,但有个问题是没有加入表头,像下面这样:

    data1, data2, data3

    data4, data5, data6

    ......

    我想得到这个结果:

    columnName1, columnName2, columnName3

    data1, data2, data3

    data4, data5, data6

    ......

    请问该加什么样的参数?

    谢谢。

    2012年2月23日 6:01

答案

  • bcp不支持直接导出列名

    变通的办法

    1.将列名“人为的加入到第一行中”

    2.使用导入导出(dts)来导出,可以选择导出列名。

    3.在完成导出后,人为使用dos命令将含有列名的模板文件合并为一个文件。

    推荐使用方法2.或者改造目标系统,不要使用这个列名。


    family as water

    2012年2月24日 2:16

全部回复

  • Hi Zhang Yuteng,

    1. 你可以导出字段名到文件里。

      EXEC   master..xp_cmdshell    'bcp    "select   a.name   列   from   库名.dbo.syscolumns   a,库名.dbo.sysobjects   d   where   a.id=d.id   and   d.xtype= 'U '   and   d.name= ' '表名 ' ' "   queryout   c:\dt.csv   -c  -t -Sservername   -Usa   -Ppassword '

    2. 先把字段名和数据导入临时表
    像这样

    #tmp
    col1         col2 
    data1, data2

    data4, data5

    再用bcp导出


    orichisonic http://blog.csdn.net/orichisonic If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".

    2012年2月23日 10:09
  • bcp不支持直接导出列名

    变通的办法

    1.将列名“人为的加入到第一行中”

    2.使用导入导出(dts)来导出,可以选择导出列名。

    3.在完成导出后,人为使用dos命令将含有列名的模板文件合并为一个文件。

    推荐使用方法2.或者改造目标系统,不要使用这个列名。


    family as water

    2012年2月24日 2:16