Ale*_*lex 6 sql-server export bcp csv sql-server-2016
将非常大的 SQL Server 2016 结果集(超过 75 GB)转换为 CSV 文件的最佳方法是什么?工程师需要这个输出来寻找相关性。
bcp
73.5 GB 文件的路由填满了 tempdb 并开始使其他应用程序崩溃,包括 ETL 进程。
我们的用户希望导出最多 500 GB。
哪个进程会使用最少的资源,以便其他应用程序继续运行?
我也曾经在将大型结果集 (7 - 8 GB) 导出到分隔文件时遇到问题。SQLCMD、BCP 和 SSIS 都不能处理动态结果集、动态文本限定、添加列标题行等。因此,我构建了自己的工具来处理这个问题。它目前作为SQL# SQLCLR 库(我编写的)中的DB_BulkExport存储过程退出,但计划是将它分解为一个独立的导出实用程序并扩展功能。
请注意,DB_BulkExport存储过程仅在 SQL# 的完整(付费)版本中可用(即它不在免费版本中),但我不知道有任何免费实用程序可以执行此类操作(因此我自己写的)。
关于大型结果集的导出:到目前为止,我还没有遇到内存问题,因为它在从结果集中读取每一行时将其写入文件。
如果您只需要对在结构/架构方面没有真正改变的单个表/查询进行此导出,那么最好自己编写一个小型的、专门的应用程序,无论是在 .NET 还是 PowerShell 中。棘手的部分是处理动态需求。但是,如果你知道什么是列命名和数据类型,等等,那么它应该是在打开输出文件,执行查询,然后对每一行的简单,足以事情SqlDataReader
只是String.Concat
一切融合在一起,包括文本的资格,其中需要并在需要时应用适当的格式说明符(即日期(时间)值)。
归档时间: |
|
查看次数: |
2621 次 |
最近记录: |