【问题标题】:Copying large data from result of query in MS SQL Server Management Studio从 MS SQL Server Management Studio 中的查询结果中复制大数据
【发布时间】:2010-04-21 09:34:17
【问题描述】:

我有一个返回大“ntext”结果的查询。我想把它复制到纯文本编辑器(记事本),但只有一部分被复制了。

我尝试增加查询选项 -> 结果 -> 文本,但最大值似乎是 8192,这对我来说是不够的。

关于如何实现这一点的任何想法?

我正在使用 SQL Server Management Studio 2008,如果这很重要的话。

TIA! 拉杰

【问题讨论】:

  • 请问您为什么要通过 SSMS 访问如此大量的数据(除了方便)?
  • 我只对两行感兴趣,我基本上只想检索存储为文本的两条 SMTP 消息(用于验证某些内容)。编写程序来提取这些信息似乎有点矫枉过正

标签: sql-server-2008 ssms


【解决方案1】:

我获取全部数据的方法是使用“将结果另存为...”选项,然后选择 TXT 文件,然后您可以使用记事本++ 之类的好编辑器打开它,您将拥有所有数据。

干杯 =0)

【讨论】:

  • 这对我不起作用。与 .csv 导出相同的输出,这还不够。还是断了。
  • 对我也不起作用。 txt 文件中的结果未满。
【解决方案2】:

试试这样的:

--creates file on server
declare @cmd varchar(1000)
select @cmd = 'osql -U -P -S -Q"select * from yourtable" -o"c:\yourtextfile.txt" -w50000'
exec master..xp_cmdshell @cmd

--creates file on server
master..xp_cmdshell 'bcp your_table_or_view out c:\file.bcp -S -U -P -c '

--the limit of 8192 is per column, so split your column into multiple columns
--you will get a 1 character gap between these "columns" though
;WITH YourQuery AS
(
    SELECT
        col1
        FROM ...
)
SELECT SUBSTRING(col1,1,8192), SUBSTRING(col1,8193,8192), SUBSTRING(col1,16385,8192) --...

【讨论】:

  • 感谢 KM 的三个解决方案。 “服务器”是指将在数据库服务器上创建文件吗?啊,这对我来说几乎没用(因为我无法访问数据库服务器文件系统)
  • @Raj,是的,服务器在数据库的机器上。
【解决方案3】:

又快又脏的方式

  1. 右键单击表格 - '编辑前 200 行'
  2. 单击“显示 SQL 窗格”
  3. 编辑 SQL 以返回所需的值
  4. 单击执行 SQL
  5. 现在你可以复制大结果了

我刚刚以这种方式复制了 87K 文本。

【讨论】:

  • 只有 XML 类型这样工作,文本类型限制为 65536
  • +1 用于编辑前 200 行选项,它可能限制为 65k,但绝对比从 select 语句中复制要好,在我的情况下,它还可以将您的格式设置为格式化的 JSON 字符串。跨度>
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多