使用ssms将数据从sql server导出为CSV

时间:2012-06-13 17:56:54

标签: sql sql-server sql-server-2008 ssms

我需要使用SSMS从SQL Server 2008中的多个表导出数据。我想要使用原生导出数据向导;我想改用查询。这意味着我无法使用sqlcmdbcp

如何使用查询从SQL Server 2008导出数据?

我需要它以逗号分隔并双引号作为文本限定符。

非常感谢任何指导/帮助。

5 个答案:

答案 0 :(得分:8)

您可以轻松地从SSMS创建CSV输出,但它不会报价,因此您可能希望在步骤6中选择像制表符分隔的格式:

  1. 打开一个新的查询窗口。
  2. 创建SQL查询。
  3. 右键单击查询窗口。
  4. 选择查询选项...
  5. 选择结果下的文字。
  6. 更改输出格式:以逗号分隔。
  7. 将每列中显示的最大字符数更改为8000或适当的值。
  8. 单击“确定”。
  9. 右键单击查询窗口。
  10. 选择结果至文件结果。
  11. 执行您的查询。
  12. 选择文件名和位置。
  13. 点击保存。

答案 1 :(得分:5)

您可以运行xp_cmdshell来运行bcp操作:

use [master];

declare @sql nvarchar(4000)
select @sql = 'bcp "select * from sys.columns" queryout c:\file.csv -c -t, -T -S'+ @@servername
exec xp_cmdshell @sql

当然,您必须弄清楚如何格式化限定符(可能通过format file

编辑:

您的源查询需要具有以下内容:

SELECT IntValue + '"' + CharValue + '"' FROM TABLE

此外,您可能需要启用此功能

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
GO

答案 2 :(得分:3)

无法使用SQL查询创建文本文件。 SQL仅用于从数据库中获取,分析,更新(等)数据。您需要有sytem可执行文件/ dll才能写入文件 您是否有特定原因要使用SSMS将生成的结果导出到csv?为什么不使用SSIS生成csv的结果?

如果您使用SSIS执行此操作,则可以创建一个包以导出信息,然后将作业中的包计划为在您希望的时间运行。

答案 3 :(得分:1)

要导出到EXISTING excel文件中:

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable

这已过时,但我相信它仍然有效。

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

干杯!

答案 4 :(得分:-1)

您可以使用insert来编写一个选择的spiced。

例如: 从SourceTable中选择'插入TargetTable值(id,name)值('''+ id +''','''+ name +''')来源于SourceTable

相关问题