【问题标题】:Is there a SELECT ... INTO OUTFILE equivalent in SQL Server Management Studio?SQL Server Management Studio 中是否有 SELECT ... INTO OUTFILE 等效项?
【发布时间】:2011-06-15 06:55:51
【问题描述】:

MySQL 有一个漂亮的命令SELECT ... INTO OUTFILE 可以将结果集写入文件(CSV 格式或其他一些可选格式)。

我目前正在使用 SQL Server Management Studio 查询 MS-SQL 后端服务器。我有多个 SQL 查询,想将输出结果集写入文件。有什么方法可以将查询结果直接存储到文件中?

【问题讨论】:

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


    【解决方案1】:

    在 SSMS 中,“查询”菜单项...“结果到”...“结果到文件”

    快捷键 = CTRL+shift+F

    你也可以全局设置

    “工具”...“选项”...“查询结果”...“SQL Server”..“默认目标”下拉菜单

    编辑:评论后

    在 SSMS 中,“查询”菜单项...“SQLCMD”模式

    这允许您运行类似“命令行”的操作。

    SSMS 2008 中的快速测试

    :OUT c:\foo.txt
    SELECT * FROM sys.objects
    

    编辑,2012 年 9 月

    :OUT c:\foo.txt
    SET NOCOUNT ON;SELECT * FROM sys.objects
    

    【讨论】:

    • 谢谢。我实际上希望直接通过查询来做到这一点。因为我有多个查询,所以在执行批量查询的时候,上一个查询的结果是堆积起来的。
    • +1 天才!这就像一个魅力。只是最后一个请求:是否可以将分隔符指定为逗号而不是普通格式?我的一些值中包含空格,因此默认格式会使我的解析器非常复杂。
    • (编辑中的错字,或者你从遥远的未来及时回来帮助人们)
    • @AndrewMao 您需要为每个文件使用GO
    • @IAM_AL_X 您只需转到查询->查询选项->结果->文本并更改“每列中显示的最大字符数”即可轻松更改该设置
    【解决方案2】:

    在 SQL Management Studio 中,您可以:

    1. 右键单击结果集网格,选择“将结果另存为...”并保存。

    2. 在工具栏上切换“结果转文本”按钮。这将在每次查询运行时提示输入文件名。

    如果需要自动化,请使用 bcp 工具。

    【讨论】:

    • +1 感谢您提供 bcp 工具。当我尝试它时,它给了我一个错误Copy direction must be either 'in', 'out' or 'format'。你介意给我一个简短的例子,说明如何使用来自文件的 SQL 查询来使用它吗?
    • 示例:bcp "SELECT Name, GroupName FROM HumanResources.Department" queryout c:\department.txt -c –T
    • 如果您有任何超过 256 个字符的列,请不要使用 SSMS 方法。它会默默地截断该列,或者至少在旧版本的 SS 中会截断。
    • @IAM_AL_X 您只需转到查询->查询选项->结果->文本并更改“每列中显示的最大字符数”即可轻松更改该设置
    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2011-02-21
    • 2013-03-24
    • 1970-01-01
    • 2012-10-02
    • 2019-09-01
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多