【发布时间】:2015-01-06 03:58:57
【问题描述】:
我对 bcp 导出到 csv 的结果显示方式有疑问。
以下内容可以正常工作,但以逗号分隔,因此无法满足我的需要。
DECLARE @sql VARCHAR(8000)
SET @sql = 'bcp "SELECT * FROM db..viewname" queryout "C:\test.csv" -c –t, -T -S <SERVERNAME>'
EXEC master..xp_cmdshell @sql
结果:
但是,如果我将“,”更改为管道(或其他任何东西),它就会中断。
DECLARE @sql VARCHAR(8000)
SET @sql = 'bcp "SELECT * FROM db..viewname" queryout "C:\test.csv" -c –t"|" -T -S <SERVERNAME>'
EXEC master..xp_cmdshell @sql
结果:
使用的视图是从带有 WHERE 子句的表中选择的简单列。
我在这里错过了什么..?
【问题讨论】:
-
将输出文件重命名为
.csv以外的名称。 Excel 将始终假定它是逗号分隔的(逗号分隔值),并自动加载它。例如,如果您将其命名为 .txt 并手动打开它,您可以告诉 Excel 它是管道分隔的,它会识别管道并正确分解数据。 -
所以没有办法在默认情况下将其格式化为带有管道分隔符的列? .txt 文件是否需要在初始导出后导入 Excel 并指定为分隔符?
-
开箱即用的 Excel 不会像它(认为它)知道如何打开 csv 文件一样自动打开管道分隔的文件。您可以手动执行,文件|打开等,或者如果您要经常执行此操作,请编写一个宏来执行此操作。这个问题只是与 Excel 显示数据的方式有关,还是数据导出本身有问题?
-
在这种情况下,这似乎是我缺乏 Excel 知识的问题。在这种情况下,数据导出很好并且按预期工作。我导出到 .txt,通过 Excel 作为数据导入并使用管道分隔符,一切都很好。感谢您的帮助!
标签: sql-server tsql csv bcp