我需要使用SSMS从SQL Server 2008中的多个表导出数据。我不想要使用原生导出数据向导;我想改用查询。这意味着我无法使用sqlcmd
或bcp
。
如何使用查询从SQL Server 2008导出数据?
我需要它以逗号分隔并双引号作为文本限定符。
非常感谢任何指导/帮助。
答案 0 :(得分:8)
您可以轻松地从SSMS创建CSV输出,但它不会报价,因此您可能希望在步骤6中选择像制表符分隔的格式:
答案 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