SQL Server:使用批量导出实用程序将数据导出到csv文件时删除换行符

问题描述 投票:0回答:1

我有一个表,我需要导出到csv文件。这个表有一个xml字段,可以有我必须删除的换行符。我使用bcp utility将数据从Sql Server导出到csv文件。

这是表的结构:

ID int
CODE varchar(20)
XML_DATA xml

这是我使用的命令:

bcp "SELECT ID, CODE, replace(convert(nvarchar(max), XML_DATA), CHAR(13)+CHAR(10), ' ') as XML_DATA FROM MYDB.dbo.MyTable" queryout C:\output.csv -c -t0x1F -T -S "10.10.10.28"

由于某些原因,输出文件仍包含换行符。但是,如果我在SQL Server上为具有换行符的记录运行相同的查询,则输出正确(删除换行符):

SELECT
    ID, 
    CODE, 
    replace(convert(nvarchar(max), XML_DATA), CHAR(13)+CHAR(10), ' ') as XML_DATA
FROM MYDB.dbo.MyTable
WHERE ID = 1099; -- record with a line break in the XML_DATA field

我在这里错过了什么?

sql sql-server tsql bulk
1个回答
0
投票

解决了这条线的问题

replace(convert(nvarchar(max), XML_DATA), CHAR(13)+CHAR(10), ' ') as XML_DATA

有了这个

replace(replace(convert(nvarchar(max), XML_DATA), CHAR(13), ' '), CHAR(10), ' ') as XML_DATA

另外我想指出,默认情况下,Sql Server Management Studio在查询结果的复制/粘贴时不包含CLRF字符,您必须显式启用选项以保留CLRF字符并重新启动SQL Server:preverse CLRF on Sql Server Management Studio query result。那给了我一些困惑^ _ ^

© www.soinside.com 2019 - 2024. All rights reserved.