如何将SQL Server 2005查询导出为CSV
我想将某些SQL Server 2005数据导出为CSV格式(用引号将逗号分隔)。我可以想到很多复杂的方法来做到这一点,但我想要做到这一点正确的方式。我已经看过bcp,但我无法弄清楚如何在字段周围加引号(除了将它们连接到字段值,这很丑陋)。我想我可以用sqlcmd和-o来做,但是出于同样的原因,这看起来很丑。如何将SQL Server 2005查询导出为CSV
有没有bcp的方式来做到这一点?
有没有合理的sqlcmd方法来做到这一点?
在管理工作室中内置了一些很棒的简单实用程序,我只能忽略它?
在Management Studio中,选择数据库,右键单击并选择Tasks->Export Data
。您将看到可以导出到CSV,Excel等不同格式的选项。
您也可以从查询窗口运行查询并将结果保存为CSV。
我知道这是简单的那样的事情。谢谢。 – 2009-04-28 19:56:51
当您将结果保存为CSV时,它似乎无法正确地在varchar字段中转义逗号 – 2012-02-21 16:46:49
这是2005年的工作吗?我无法获得文件类型的选项 – 2013-01-04 09:47:19
对于即席查询:
显示结果网格模式(CTRL + d),运行查询,单击左上角框在结果网格中,粘贴到Excel,保存为CSV。您可以直接粘贴到一个文本文件(不能现在就试试)
或“结果到文件”有自己的选择太对CSV
或“结果到文本”用逗号分隔符
工具..选项和查询..选项(我认为,无法检查)的所有设置太
这就是我要发布的信息 – DForck42 2009-04-28 20:03:42
这对于大型结果集......内存异常不适用。 :( – CodeRedick 2012-02-08 16:24:15
在管理工作室,设置查询选项输出到文件,并在选项 - >查询结果集输出到文件以逗号作为分隔符输出。
不知道你能做到这一点,谢谢。 – 2009-04-28 19:57:24
是的,在Management Studio中有一个非常简单的实用程序,如果您只是希望将查询结果保存为CSV。
右键单击结果集,选择“Save Results As”。默认文件类型是CSV。
如果它符合您的要求,您可以在命令行上使用bcp,如果您经常这样做或想将其构建到生产过程中。
Here's a link描述了配置。
这回答了我关于bcp的问题(它和我想象的一样丑陋;没有人说bcp不是难看的)谢谢 – 2009-04-28 19:59:28
如果你不能使用Management Studio,我使用sqlcmd。
sqlcmd -q "select col1,col2,col3 from table" -oc:\myfile.csv -h-1 -s","
这是从命令行执行它的快速方式。
SET NOCOUNT上
的报价都在那里,用-w2000保持每行一个行。
在SQL 2005,这是简单的: 1.打开SQL Server Management Studio并 2.查询 - >结果复制你需要到TSQL,SQL语句如exec sp_whatever网格 3。突出显示sql语句并运行它 4.突出显示数据结果(左键单击结果网格的左上角区域) 5.现在右键单击并选择Save Results As 6.在Save as类型中选择CSV,输入一个文件名,选择一个位置并点击保存。
简单!
我必须做一个比死劲说让它在SQL Server Management Studio 2005中转到适当加引号
Tools->Options->Query Results->Sql Server->Results To Grid
把支票旁边的选项件事:
Quote strings containing list separators when saving .csv results
注:上述方法不适用于SSMS 2005 Express的工作!据我所知,当使用SSMS 2005 Express将结果导出到.csv时,没有办法引用这些字段。
在SQL Server 2012 - 管理工作室:
解决方案1:
执行查询
右键单击结果窗口
选择结果另存为从菜单
选择CSV
解决方案2:
数据库右击
选择任务,导出数据
选择源DB
选择目的地:平面文件目标
选择一个文件名
选择格式 - 分隔
选择一个表或编写一个查询
选择一个列分隔符
注: 你可以选择一个文本限定符将分隔文本字段,如报价。
如果您有一个带有逗号的字段,请不要使用逗号作为分隔符,因为它不会转义逗号。您可以选择列分隔符,如垂直条:|而不是逗号或制表符。否则,编写一个查询来转义您的逗号或分隔您的varchar字段。
您需要使用的转义字符或文本限定符取决于您的要求。
SSIS是一个很好的方法来做到这一点。这可以使用SQL Server代理作业进行调度。
我认为这样做最简单的方法是从Excel。
- 打开一个新的Excel文件。
- 单击数据选项卡上
- 选择其他数据源
- 选择SQL Server
- 输入您的服务器名称,数据库,表名等
如果您有Excel的一个较新版本您可以从PowerPivot中提取数据,然后将这些数据插入表中。
另请参阅:http://stackoverflow.com/questions/425379/how-to-export-data-as-csv-format-from-sql-server-using-sqlcmd – 2010-03-11 16:52:40