如何使用|导出sql查询的数据txt格式的分隔符

时间:2017-06-14 12:51:24

标签: sql-server-2008

我有一个查询,它以sql

中的以下格式输出
Column1  Column2 Column3
  X        Y       Z
  A        B       C

我想要的是将该查询的输出导出到txt文件中,列数据为|分隔。例如:

Column1|Column2|Column3
 X|Y|Z
 A|B|C

任何帮助将不胜感激!!!

1 个答案:

答案 0 :(得分:0)

更新:通用解决方案的新方法

通常查询结果集并非易事。在我看来,有两种方法:

  • 使用FOR XML RAW将结果集转换为XML并使用XML的强大功能来处理元素,节点和属性
  • 使用CSV导出

对于CSV方法,您会发现大量旧问题。 Start here

对于通用查询方法,请看一下:

DECLARE @tbl TABLE(Column1 VARCHAR(100),Column2 VARCHAR(100),Column3 VARCHAR(100));
INSERT INTO @tbl VALUES ('X','Y','Z'),('A','B','C');

SELECT STUFF(r.value(N'text()[1]',N'nvarchar(max)'),1,1,'') AS Concatenated
FROM
(
    SELECT 
    (
        SELECT * FROM @tbl AS Tbl FOR XML RAW,TYPE --<-- This is your existing query
    )
) AS A(x)
OUTER APPLY
( SELECT x.query
    (N'
            for $r in /row
            return
            <row>
            {
                for $a in $r/@*
                return concat("|",$a)
            }
            </row>
    ')
) AS B(y)
OUTER APPLY y.nodes(N'/row') AS C(r);