【问题标题】:exporting data from sql server into a CSV using ssms使用 ssms 将数据从 sql server 导出到 CSV
【发布时间】:2012-06-13 17:56:54
【问题描述】:

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

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

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

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

【问题讨论】:

  • 要清楚,可以在导出数据向导中使用查询
  • @swasheck 谢谢,我的意思是说查询的原因是因为我需要自动化这个并将参数传递给查询

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


【解决方案1】:

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

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

【讨论】:

  • 我需要这个自动化,因为我需要将参数传递到查询中
【解决方案2】:

您可以运行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

【讨论】:

  • 非常感谢。我可以在没有格式文件的情况下执行 sqlcmd 吗?我不想使用格式文件,这可行吗?
  • 当然,但是你必须做更多的工作才能放入文本限定符
  • 太棒了!你能让我开始吗?
  • 实际上只是格式化查询的问题,以便它在您需要的地方包含"
  • @АртёмЦарионов 要求这里的人登录您的邮箱参加会议以审查您的代码是不礼貌的。我们需要在此站点上进行交互,以便人们能够解决他们的问题。鼓励某人登录您的邮箱并不能帮助下一个遇到同样问题的人。如果您的问题如此独特,那么您可能正在努力解决错误的问题?
【解决方案3】:

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

如果您使用 SSIS 来执行此操作,您将创建一个包来导出信息,然后将包安排在一个作业中,以便在您希望它运行时运行。

【讨论】:

  • 谢谢 - 我如何以这种方式将参数传递给查询?
  • 如果您采用 SSIS 方法,一个简单的选择查询就可以完成任务。如果您想了解如何使用 SSIS 执行此操作,请参阅 this
【解决方案4】:

要导出到现有的 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

干杯!

【讨论】:

  • 没有。但是,您可以使用自动化将 xls 更改为 csv。为什么选择 CSV 而不是 xls?
  • xls 不支持我需要的行数
【解决方案5】:

您可以编写一个带有插入的选择。

例如: select 'insert into TargetTable values(id, name) values ('''+ id +''','''+ name +''')' from SourceTable

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2016-01-13
    • 2014-07-26
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多