【问题标题】:How to export fast large tables from SQL Server to csv?如何将快速大表从 SQL Server 导出到 csv?
【发布时间】:2021-08-12 19:12:57
【问题描述】:

我正在尝试将大型(1000 万行)表导出到以分号分隔的 .csv 文件。我目前在 Microsoft SQL Server Management Studio v17 中使用内置工具(导入/导出向导),导出大约需要 5 小时。

有没有一种简单的方法可以加快这个过程?

我的公司限制我只能使用 R/python 解决方案,当然除了 SQL Server 本身。

【问题讨论】:

  • 根据我的经验,最好的机制(在 R 或 python 中)是使用命令行工具sqlcmd。与分叉进程、将数据下载到主要是 CSV 文件然后读入相关的开销通常低于对DBI::dbGetQuery 的“正常”调用。 (我假设您的查询已经过优化(例如,索引设置正确且使用良好)并且网络带宽不是限制因素。)
  • 这听起来异常缓慢。有非常非常多的列吗?当前输出文件有多大?我尝试了以下链接中的示例,其中包含 10M 行,大多数方法需要大约一秒钟来编写 ~300MB CSV:danielecook.com/speeding-up-reading-and-writing-in-r
  • 贵公司对 SQL Server 的定义有多模糊/模糊?您可能找到的最快方法是bcp Utilitybcp.exe 是每个 SQL Server 安装的一部分,只是不能在 T-SQL 中直接访问。但是,对于常规导出,它通常安排在 SQL 代理作业中,并且可以使用存储过程和用户​​定义的表值函数的输出,而不仅仅是整个表和视图。
  • 表格很宽(600 列),输出文件大约有 25 Gb。
  • @Miczab 你为什么要这样做?你想达到什么目的?可能有更好的方法来做 ti。 and the export takes approximately 5 hours. 是什么让您认为任何其他工具会更快?你的磁盘有多快?其他进程是否使用它?如果您尝试将数据导出到与数据库相同的磁盘中,那么您只是将 IO 带宽减半。如果该表正在使用中,您的读取将被任何修改阻止

标签: python sql r sql-server


【解决方案1】:

您的表在内存中的大小是多少?我有一个 ~2Giga 表在几分钟内变成了一个 csv。 检查你的数据源连接,我用的是OLEDB。

【讨论】:

猜你喜欢
  • 2013-10-12
  • 2021-04-04
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 2010-10-22
  • 2014-12-17
  • 2017-09-23
相关资源
最近更新 更多