从SQL Server 2005将数据导出为固定宽度文件

时间:2008-12-05 19:44:48

标签: sql-server

我认为将视图中的数据从SQL Server 2005导出到固定宽度的文本文件是一项非常简单的任务。但精灵很痛苦。格式不正确。有谁知道如何处理它?或者更好的方法吗?

4 个答案:

答案 0 :(得分:5)

将bcp与queryout选项一起使用 http://msdn.microsoft.com/en-us/library/ms162802(SQL.90).aspx

bcp "SELECT * FROM AdventureWorks.Person.Contact" queryout Contacts.txt -c -T

如果需要固定宽度输出

,请使用格式文件

http://weblogs.sqlteam.com/brettk/archive/2006/07/06/10504.aspx

我刚尝试在AdventureWorks中导出,Fixed Width也给了我很多问题(与列分隔符相比) 我不得不忽略GUID列,不包括第一行中的列名等。最后导出的Sales.Customer表

如果没有BCP,您可能需要查看SSIS或SQLCMD

答案 1 :(得分:1)

一种选择是使用OpenDataSource将行写入文本文件。这要求文本文件已经存在,但相对容易。

这篇文章(为了披露,我写了它,它专注于阅读,但也涉及写作)解释了使用OpenDataSource从文本文件中读取和写入的基础知识。 :http://www.sqlservercentral.com/articles/OpenDataSource/61552/

答案 2 :(得分:0)

如果向导的格式不符合您的需求,您将需要开发自己的SSIS包。你确定你真的需要一个固定宽度的文件吗?分隔文件可能更容易正确,因为它们更常见。

答案 3 :(得分:0)

我发现SQL2005 / SSIS只是简单易行,看似简单的任务。事情总是比我们应该长5倍。我知道我并不孤单。

BCP应该有效。

不知道sqlcmd - 似乎它没有固定宽度,除非你在sql语句中做了填充 - 这也很痛苦。

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout]
  [-h headers]           [-s colseparator]      [-w screen width]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-c cmdend]            [-L[c] list servers[clean output]]
  [-q "cmdline query"]   [-Q "cmdline query" and exit]
  [-m errorlevel]        [-V severitylevel]     [-W remove trailing spaces]
  [-u unicode output]    [-r[0|1] msgs to stderr]
  [-i inputfile]         [-o outputfile]        [-z new password]
  [-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit]
  [-k[1|2] remove[replace] control characters]
  [-y variable length type display width]
  [-Y fixed length type display width]
  [-p[1] print statistics[colon format]]
  [-R use client regional setting]
  [-b On error batch abort]
  [-v var = "value"...]  [-A dedicated admin connection]
  [-X[1] disable commands, startup script, enviroment variables [and exit]]
  [-x disable variable substitution]
  [-? show syntax summary]