在 Windows 上创建命名管道

PP.*_*PP. 7 windows sql-server pipe sql-server-2005

我想使用 BCP(批量复制程序)从 SQL Server 2005 数据库编写一个大型数据集。

理想情况下,我想执行以下操作:

bcp MyDatabase..MyTable OUT STDOUT -c -t, |gzip -c c:\temp\dataset.csv.gz
Run Code Online (Sandbox Code Playgroud)

然而,BCP 只是将其写入名为 STDOUT 的文字文件。

我也试过:

bcp MyDatabase..MyTable OUT CON: -c -t, |gzip -c c:\temp\dataset.csv.gz
Run Code Online (Sandbox Code Playgroud)

但这会返回和错误Error = [Microsoft][SQL Native Client]Unable to open BCP host data-file

那么,我可以在任何地方创建命名管道吗?我在网络上看到了一些提示,以某种方式从gzip一端绑定到一个文件名,如 \\.\ named_pipe - 但这是如何完成的?

更新:请注意,微软自己承认他们真的不关心 SQL Server 的效率:http ://connect.microsoft.com/SQLServer/feedback/details/337702/support-bcp-out-in-and-bulk-至少插入压缩或命名管道支持

njd*_*njd 3

在 Unix 上,您可以使用mkfifo来完成此类操作,但据我所知,没有 Windows 命令行工具来创建或操作命名管道。命令行工具无法像传统路径和 UNC 路径那样访问它们。

如果您足够了解 Perl,则可以使用 Win32::Pipe 在 Perl 中创建命名管道。您可以编写一个 Perl 客户端来从管道中提取数据并将其发送到 STDOUT,但这在 Windows 中确实无法优雅地完成。


归档时间:

查看次数:

6010 次

最近记录:

15 年,7 月 前