日期:2014-05-20  浏览次数:20926 次

急,关于sqlserver导出文本
我想把sqlserver的数据导出到文本中,需要根据列长度设置间隔宽度(间隔宽度=列长-数据的实际宽度),且要使用右对齐的方式,比如表中有三列:COLA   char(5),COLB   decimal(15,2),COLC   decimal(15,2)。则在文本中要显示为:
___XY__________20.32___________0.00
___XZ___________0.32___________0.05

其中的 "_ "是为了在这里说明意思用来代替空格的。
请问用C#编写导出程序时该怎么进行控制,谢谢。

------解决方案--------------------
列长在数据导出前知道吗?

还是需要通过数据库的表结构来获得?
------解决方案--------------------
考虑用加入空格的方法,当符个数不等于列的预定义长度时就补空格
空格的个数=列的长度-列的字符个数
------解决方案--------------------
你可以用一下SQL的BCP来导出。
msn:lzjian119@hotmail.com
------解决方案--------------------
1)使用sp_columns tableName 获取一个表的列属性,其中包括了长度
2)使用SELECT Col_Length(tableName,colName)直接获取
3)查询SysColumns获取

------解决方案--------------------
楼主指的 列长度是表定义的
列的长度
还是说实际的数据产生以后
占用的页面长度?

------解决方案--------------------
sql帮助里面有的,你试一下xp_cmdshell这个存储过程的用法
能解决很多Sql导出文件的问题
例:
--下例将当前目录内容写入当前服务器目录下名为 dir_out.txt 的文件中。

DECLARE @cmd sysname, @var sysname
SET @var = 'dir /p '
SET @cmd = 'echo ' + @var + ' > dir_out.txt '
EXEC master..xp_cmdshell @cmd


------解决方案--------------------
中间空格用制表符 "\t "表示