Joh*_*ton 29 csv file-format sql-server-2005
我正在运行SQL Server Management Studio 2005中的查询,该查询将HTML文件存储为字符串,例如:
SELECT html
FROM table
Run Code Online (Sandbox Code Playgroud)
此查询很好地显示在"结果"窗口中,即每行包含整个HTML文件的字符串,每行一个记录.
但是,当我使用"结果到文件"选项时,它会将其导出为不可用的CSV,并且在字段中(即在HTML中)发生换行时,CSV中会出现换行符,而不是根据需要每行换行一行.我尝试使用"网格"和"文本"结果的查询>查询选项,但无济于事.出口到CSV的字段不会出现在引号中.
一些想法:
可能会附加带有SQL的引号吗?
是否有一些T-SQL等同于其他方言中可能的WITH CSV HEADER命令?
Ray*_*Ray 26
我没有看到你将html导出到csv会有多大成功 - 它真的不是csv的意思.你最好使用xml格式,其中html代码可以包含在cdata元素中.
也就是说,你可以尝试使用Replace函数来删除换行符,你可以手动添加引号 - 如下所示:
select '"' + replace (replace (html, char(10), ''), char(13), '') + '"'
Run Code Online (Sandbox Code Playgroud)
如果你的html值中有双引号,你需要逃避它们.
Ufu*_*arı 19
如果您使用的是Visual Studio,则Server Explorer是另一种解决方案.您可以正确地从其网格中复制和粘贴结果.
Zan*_*ano 17
按照最接近的一个标准,我们有,一个格式正确的CSV文件应包含报价要么分离器(最常见的领域;
或,
)或断行.
SQL Server Management Studio可以做到这一点,但令人惊讶的是它没有默认启用此选项.要启用,请转到工具→选项→查询结果→结果到网格,然后选中"在保存.csv结果时引用包含列表分隔符的字符串"
RPh*_*der 11
我知道这有多大,但我发现它和其他人也可能.你可能想要进一步采取Martijn van Hoof的答案,除了回车(13)和换行(10)之外,还要删除可能的标签(char(9)).
SELECT REPLACE(REPLACE(REPLACE(mycolumn, CHAR(9), ''), CHAR(10), ''), CHAR(13), '') as 'mycolumn' FROM mytable
Run Code Online (Sandbox Code Playgroud)
带换行符的列:"mycolumn"
SELECT REPLACE(REPLACE(mycolumn, CHAR(13), ''), CHAR(10), '') as `mycolumn` FROM mytable
Run Code Online (Sandbox Code Playgroud)
这取代了换行符.
我知道这是一个非常古老的问题,现在已经得到了回答,但这也应该有所帮助:
SELECT html
From table
For Xml Auto, Elements, Root('doc')
Run Code Online (Sandbox Code Playgroud)
它应该吐出一个xml
然后你可以将该xml导入excel