2010-10-08 69 views
9

我试图将数据从SQL Server导出为CSV格式。我有一个蝙蝠任务来执行这个定期运行的任务。命令是:使用SQLCMD.EXE导出CSV数据

SQLCMD.EXE -d [db details] -i c:\export.sql -o c:\export.csv -s"," -W 

SQL文件只是一个来自视图的SELECT *。

这个工作原理除了有些行在数据中有逗号,所以需要引用这些值。我可以将列分隔符更改为“','”,但是之后我需要SQL Server才能在数据中转义单引号。

不幸的是改变分离到另一个角色是不可能解决问题的情况下100%的领域之一包含其中包含各种各样的神秘和奇妙的字符另一个应用程序序列化的数据。

有什么方法可以让我获得标准的带引号的CSV数据?

回答

9

您应该可以修改您的SELECT语句以使用QUOTENAME函数。当然,您必须单独列出所有列,而不是使用SELECT *

注:这可能很难在屏幕上阅读,但对于QUOTENAME的第二个参数是:

{单引号} {双引号} {单引号}

SELECT QUOTENAME(Column1, '"'), QUOTENAME(Column2, '"') 
    FROM YourView 
+0

谢谢,这个作品完美。 – 2010-10-11 12:06:25

+0

如何使NULL输出为“”? – PerlDev 2010-11-15 15:20:25

+0

在一个批处理文件,工作就像这样的魅力(具有延迟扩展启用,并用双引号逃脱“字符):选择QUOTENAME(字段名,‘‘’’),...... – djangofan 2011-11-15 17:40:10