如何缓冲BCP输出而不是写入文件

时间:2014-01-10 19:55:39

标签: c# sql-server bcp

我正在使用BCP从SQL Server导出数据。输出文件写入磁盘,但需要重新编码。使用C#,我将文件重新编码为UTF8并将其重新保存到磁盘。它必须保存输出,重新编码,然后重新保存。似乎效率低下。

我想知道是否有办法消除两次保存数据。例如,在将输出写入磁盘之前,将输出定向到内存或截取内存中的BCP输出文件?

非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

将数据加载到C#应用程序中,并使用您喜欢的任何格式将其写入磁盘。与自定义应用相比,BCP没有固有的效率优势。您可能在ADO.NET + C#中使用的CPU比基于C ++的BCP使用的CPU多。这是要测试的。

答案 1 :(得分:0)

您应该查看Windows命名管道。类似于Unix概念,但不容易创建。

This blog post提供了一个工具来设置管道并自动压缩"文件"写入的数据。我们使用它来压缩bcp输出,而无需将未压缩的文件写入磁盘。

提供的代码是您"应该"能够修改它以转换编码而不是压缩数据。