如何在存储过程中创建管道分隔的文本文件

时间:2015-07-14 21:28:50

标签: sql-server tsql stored-procedures

我需要创建一个stored procedure,根据用户要求创建pipe delimited text文件。

我将使用的table只有6列,其名称与用户必填字段不同。

此外,用户想要的列数为23.其中一些我们没有数据。我只需要在text file

中显示它们

我不确定如何在跳过其他可选列的同时显示在相应列下排列的数据。

我想我需要这样的东西:

OptionalColumn 1|DataColumn 1|OptionalColumn 2|DataColumn 2
                  12/12/2015                      Name 1
                  12/12/2015                      Name 2  

或管道分隔文件的其他格式。

我该如何处理? 从来没有做过这样的事情。

2 个答案:

答案 0 :(得分:0)

您可以使用简单的选择

连接您的字段
SELECT  '|' + YOUR_COLUMN_NAME

如果您需要更精细的选择,那么这种Stack Overflow方法可能会为您提供想法Comma Separated results in SQL 该示例创建一个逗号分隔列表,但原理是相同的。它允许连接来自多个行的数据以获得相同的id。

答案 1 :(得分:0)

如果你的输出总是一致的话,似乎你可能只能使用连接....

Select 'col1|col2|col3|coln....'
union
Select '' as extracol + '|' + realcol + '|' + '' as extracol2 + '|' + realcol2 +'...';

..将生成带标题的String

如果您需要动态发现不同故事的结构,则必须使用系统表,但这可能是一个简单的解决方案。此外,如果你有大量的行,这不是一个很好的方法。 如果您的应用要将条目流式传输到文件,最好让您的应用创建文件格式,而不是数据库存储过程