我正在使用BCP从SQL Server中导出数据。输出文件被写入磁盘,但需要重新编码。使用C#,我将文件重新编码为UTF8并将其重新保存到磁盘。因为它必须保存输出,重新编码,然后重新保存。似乎效率低下。如何缓冲BCP输出而不是写入文件
我想知道是否有办法消除两次保存数据。例如,在将输出写入磁盘之前,将输出指向内存或在内存中截取BCP输出文件?
任何意见非常感谢。
我正在使用BCP从SQL Server中导出数据。输出文件被写入磁盘,但需要重新编码。使用C#,我将文件重新编码为UTF8并将其重新保存到磁盘。因为它必须保存输出,重新编码,然后重新保存。似乎效率低下。如何缓冲BCP输出而不是写入文件
我想知道是否有办法消除两次保存数据。例如,在将输出写入磁盘之前,将输出指向内存或在内存中截取BCP输出文件?
任何意见非常感谢。
您应该查看Windows命名管道。类似于Unix的概念,但不容易创建。
This blog post提供了一个工具,它可以设置管道并自动压缩写入它的“文件”数据。我们使用它来压缩bcp
输出,而不将未压缩的文件写入磁盘。
提供的代码让您“应该”能够修改它来转换编码,而不是压缩数据。
您目前如何调用BCP?作为C#应用程序的一部分或单独? – Yuck
为什么你甚至使用BCP,为什么不使用[SqlDataReader](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader%28v=vs.110%29.aspx )直接在您的代码中读取记录? –
@Yuck - 我不是从C#应用程序调用它,而是直接从SQL Server调用它 - 使用EXEC MASTER..xp_cmdshell'bcp“SELECT blah,blah,QUERYOUT - 想创建批处理文件以帮助进一步加速,但这是另一个问题 – user2732180