[英]C# copy .csv file from local machine to remote postresql server
我正在C#程序中创建.csv文件,我想通过COPY命令将它们上传到postgres表中。 COPY希望文件位于数据库服务器上,但我在本地使用。 有没有办法从本地计算机上载它们?
我认为最好的答案是:“是的,有很多方法可以将文件上传到远程服务器”。 您确实有很多选择可以执行此操作。 您可能更喜欢的一种取决于与服务器通信的方式。
例如,您可以通过FTP上传文件或通过HTTP以Web表单提交文件。 或者,您可以将远程文件系统作为外部驱动器附加到本地计算机,然后将其复制。
此外,还有许多实用程序,例如SqlBulkCopy
。 它允许您不上传文件,而是从DataTable
远程插入多行。
看这个帖子 。
好吧,我发现了一种非常聪明的方法:)我在查询中使用STDIN,之后我就在流式传输文件的内容...
NpgsqlCommand dbcmd = dbcon.CreateCommand();
string sql =
"COPY table_name FROM STDIN;";
dbcmd.CommandText = sql;
serializer = new NpgsqlCopySerializer(dbcon);
copyIn = new NpgsqlCopyIn(dbcmd, dbcon, serializer.ToStream);
copyIn.Start();
foreach(...){
serializer.Add...
serializer.EndRow();
serializer.Flush();
}
copyIn.End();
serializer.Close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.