【问题标题】:Convert result of SQL query into CSV with SQL itself?使用 SQL 本身将 SQL 查询的结果转换为 CSV?
【发布时间】:2013-11-21 20:55:15
【问题描述】:

有没有办法使用 SQL 本身将 SQL 查询的结果转换为 CSV 文件?我正在寻找适用于 SQL Server 2005 及更高版本的解决方案。我在谷歌上环顾四周,他们中的大多数人建议在管理工作室、基于 XML 的解决方案和 SQLcmd 中点击选项。我不想要那些解决方案。

我们可以用普通的 SQL 来做吗?编辑 - 是否可以仅使用 SQL 将结果保存到 CSV 文件?

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2005 csv


    【解决方案1】:

    使用BCP 工具。它是 SQL Server 的一部分。此外,“csv”不是一种定义明确的格式。您需要考虑如何处理包含字段和行分隔符(通常是逗号和换行符)的字段。

    如果您真的非常需要在 SQL Server 会话中启动此操作,有几种方法可以做到这一点。他们都很笨重。请记住,实际运行 SQL Server 服务的 Windows 帐户甚至可能对您要保存 csv 的文件系统没有写入权限(它可能不应该有权限)。

    我强烈建议在 SQL 之外启动此任务。

    【讨论】:

    • 是的,一些编程语言,如 VB 或 C#
    【解决方案2】:

    您可以使用字符串连接,但要注意结果字符串中的逗号

    SELECT UserName + ',' + CAST(BirthDate as VARCHAR(12)) + ',' + CAST(NumberOfAccount as VARCHAR(10)) 
    FROM Users
    

    转义逗号使用SELECT '"' + ColumnWithCommas + "'" + ... FROM Table

    编辑:您可能需要通过复制/粘贴将数据保存到 CSV。作为替代使用this,但要小心权限。理想情况下,您的帐户不应具有保存到磁盘的权限

    【讨论】:

    • 在第二次施法之前需要加号。可以使用 SQL 本身将其保存到文件中吗?
    • 只是想理解。您是否期望 SQL Query 的输出文件为 CSV 格式??
    • @goofyui - 是的,这就是我所期待的。虽然有一个 PDF 解决方案 - sqlservercentral.com/articles/Miscellaneous/…
    【解决方案3】:

    您可以使用 SQLCMD(如果您的机器上有 SSMS,您应该拥有它)。拉出命令提示符。该命令将大致如下:

    sqlcmd -U <userid> -P <password> -S <hostname or ip> -q "<your select statement>" -o "<target file>"
    

    我认为所有的双引号都是必需的。它对我有用,所以我不担心。

    如果您想要不同的分隔符,请添加-s "&lt;separator character&gt;"

    根据每行的宽度,您可能不得不乱用-w &lt;number of characters&gt;,否则您的数据可能会开始换行。

    编辑: Anon 对 CSV 面临的挑战提出了一些非常好的观点,无论您采用何种方法,都请牢记它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多