设为首页收藏本站

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 431|回复: 0

How to export a table with a header using bcp

[复制链接]
发表于 2012-8-24 12:17:20 | 显示全部楼层 |阅读模式
本帖最后由 demo 于 2012-8-25 04:22 编辑

I swear that's what was posted.  Mostly they want a header row in their data and they didn't want to use DTS...
bcp out with column names post
OK, here you go..probably need to deal with more datatype than I have accounted for...
  1. USE Northwind
  2. GO

  3. SET NOCOUNT ON

  4. DECLARE @sql1 varchar(8000), @sql2 varchar(8000), @TABLE_NAME sysname, @TABLE_SCHEMA sysname

  5. DECLARE myCursor99 CURSOR
  6.   FOR
  7. SELECT TABLE_SCHEMA, TABLE_NAME
  8.    FROM INFORMATION_SCHEMA.Tables
  9.   WHERE TABLE_TYPE = 'BASE TABLE'
  10.     AND TABLE_NAME LIKE 'O%'

  11. OPEN myCursor99
  12. FETCH NEXT FROM myCursor99 INTO @TABLE_SCHEMA, @TABLE_NAME

  13. WHILE @@FETCH_STATUS = 0
  14.   BEGIN

  15. SELECT @sql2 = ' UNION ALL SELECT ', @sql1 = null

  16. SELECT @sql1 = COALESCE(@sql1 + ', '+''''+'"'+''''+'+'+'''','') + COLUMN_NAME + ''''+'+'+''''+'"'+''''+' AS '+ COLUMN_NAME
  17.    FROM INFORMATION_SCHEMA.Columns
  18.   WHERE TABLE_NAME = @TABLE_NAME
  19.     AND TABLE_SCHEMA = @TABLE_SCHEMA

  20. SELECT @sql2 = CASE
  21.        WHEN DATA_TYPE IN ('datetime','smalldatetime')
  22.        THEN @sql2 + ', '+''''+'"'+''''+'+CONVERT(varchar(24),' + COLUMN_NAME + ',126)+' + ''''+ '"' + '''' + 'AS ' + COLUMN_NAME
  23.        WHEN DATA_TYPE IN ('bigint','int','smallint','tinyint','money','float','real')
  24.        THEN @sql2 + ', '+''''+'"'+''''+'+CONVERT(varchar(15),' + COLUMN_NAME + ')+' + ''''+ '"' + '''' + 'AS ' + COLUMN_NAME
  25.        WHEN DATA_TYPE IN ('char','varchar','nchar','nvarchar')
  26.        THEN @sql2 + ', '+''''+'"'+''''+'+' + COLUMN_NAME + '+' + ''''+ '"' + '''' + 'AS ' + COLUMN_NAME
  27.          END
  28.    FROM INFORMATION_SCHEMA.Columns
  29.   WHERE TABLE_NAME = @TABLE_NAME
  30.     AND TABLE_SCHEMA = @TABLE_SCHEMA

  31. SELECT @sql1 = 'CREATE VIEW ' + REPLACE('['+@TABLE_SCHEMA+'].[v_'+@TABLE_NAME+'_99]',' ','_')
  32.    + ' AS SELECT '+''''+'"'+''''+'+'+''''
  33.    + @sql1 + REPLACE(@sql2,'UNION ALL SELECT ,','UNION ALL SELECT ')
  34.    + ' FROM ['+@TABLE_SCHEMA+'].['+@TABLE_NAME+']'

  35. SELECT @sql1

  36. EXEC(@sql1)

  37. -- SELECT * FROM myView99

  38. DECLARE @cmd varchar(8000)

  39. SELECT @cmd = 'bcp ' + db_name() + '.' + REPLACE('['+@TABLE_SCHEMA+'].[v_'+@TABLE_NAME+'_99] ',' ','_')
  40.    +' OUT '
  41.    +REPLACE(@TABLE_SCHEMA+'_'+@TABLE_NAME,' ','_')
  42.    +'_hdr.txt -c -S -Usa -P'
  43. SELECT @cmd
  44. EXEC master..xp_cmdshell @cmd

  45. SELECT @sql2 = 'DROP VIEW ' + REPLACE('['+@TABLE_SCHEMA+'].[v_'+@TABLE_NAME+'_99]',' ','_')
  46. EXEC(@sql2)

  47. FETCH NEXT FROM myCursor99 INTO @TABLE_SCHEMA, @TABLE_NAME
  48.   END
  49. CLOSE myCursor99
  50. DEALLOCATE myCursor99
  51. GO

复制代码
http://weblogs.sqlteam.com/brettk/archive/2005/04/13/4395.aspx

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|BC Morning Website ( Best Deal Inc. 001 )  

GMT-8, 2026-2-5 04:43 , Processed in 0.010622 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表