从sql查询结果中复制大量数据


9

在我的sql server 2008中,运行查询后的数据返回量非常大,以百万计。我尝试复制,但是它给出了异常sql内存错误。您能告诉我们如何复制整个数据并将其粘贴到Excel中吗?

我不想将其导出到txt文件,因为数据没有对齐。所以我想手动复制并将其粘贴到Excel中。请让我知道该解决方案


需要澄清的一点是:当SSMS尝试处理传入的数据时,您可能会遇到“内存不足”异常。如果内存中容纳的不止这些,您将收到该错误。如果这不会导致内存不足错误,但是在您尝试复制和粘贴数据时发生,那么问题就出在它第二次将数据复制到内存中进行复制和粘贴。任何涉及绕过数据返回SMSS的答案(例如当前接受的答案)都可以避免这种情况。
RDFozz

Answers:


17

您将无法按照需要复制和粘贴。但是,您确实有几种选择。最简单的方法是右键单击输出并另存为CSV文件。假设您的文本数据中没有逗号。

将结果另存为

您的下一个选项(可能是最好的)是使用导出向导。右键单击您的数据库名称,然后单击“任务”,然后单击“导出向导”

向导在哪里?

您的源将是您右键单击的数据库。

资源

选择一个优秀的目的地。

目的地

选择“编写查询”以指定要传输的数据。

选择一个查询

贴上您的查询

贴上您的查询

您可以在此处更改电子表格中的工作表名称。

选择源表

接下来是供您查看的映射列表

映射列表

从这里您可以立即运行该程序包,也可以保存SSIS程序包以供以后使用/修复。如果您的导出第一次不起作用,并且您完全熟悉SSIS,我将保存该软件包,以便您可以进入其中并在向导之外进行更正。

保存并运行选项

然后只需点击完成并再次完成即可。


2

如果您坚持将Excel作为目标,那么有两个简单的选择。

首先,本机“ sqlcmd.exe”或“ bcp.exe”允许您运行查询并将其自动输出到文件。假设您的数据没有制表符,制表符分隔的输出将自动输入到Excel列中。如果您的数据确实具有标签,则需要选择另一个定界符,并让Excel在导入期间根据该定界符选择列。

其次,将查询放入SSRS(SQL Server报告服务)报告中,运行它,单击软盘/保存图标右侧的箭头,然后导出到Excel。数百万行需要SSRS 2012,另存为.xlsx-不幸的是,即使SSRS 2008 R2不允许超过64k行。要自动化,请安排报告。

这些命令的参考:

Technet sqlcmd条目

Technet bcp条目

social.msdn sqlcmd选项卡分隔的论坛帖子


0

如果这只是一次性的事情。

运行查询。在右下角的结果窗口中,单击左上角的空白方框。将结果另存为...默认为CSV,请选择要转储文件的位置(网络共享或本地)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.