这个问题与Can Sql Server BULK INSERT read from a named pipe/fifo?
的回答有关@Grimace_of_Despair使用C#提供了解决方案。有关详细信息,请参阅the GitHub project。
使用server name = .
public NamedPipe(string name, string server, string dataValue)
{
_dataValue = dataValue;
Name = name;
Server = server;
Stream = new NamedPipeServerStream(name, PipeDirection.Out, 2,
PipeTransmissionMode.Byte,
PipeOptions.Asynchronous);
Stream.BeginWaitForConnection(OnConnection, this);
}
使用命名管道批量插入
var insertCommand = DbConnection.CreateCommand();
insertCommand.CommandText = "BULK INSERT [MyTable] FROM '\\.\pipe\mypipe' WITH (FORMATFILE='c:\path\to\formatfile')";
insertCommand.ExecuteNonQuery();
当我在同一台服务器上批量插入并使用\\\\.\pipe\mypipe
当我用\\\\.\pipe\mypipe
替换\\\\LocalMachineName\pipe\mypipe
时,出现错误:
System.Data.SqlClient.SqlException(0x80131904):批量加载:数据文件中遇到意外的文件结尾。
是否有人知道此错误的原因以及如何解决此问题?