c#从本地机器复制.csv文件到远程postresql服务器
本文关键字:postresql 服务器 文件 csv 机器 复制 | 更新日期: 2023-09-27 18:18:03
我在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();
如果您可以访问服务器的硬盘驱动器,您可以使用File复制它。复制方法:
File.Copy(sourceFile, destFile);
来源:文件。复制到MSDN