我在C#程序中创建.csv文件,我想通过COPY命令将它们上传到postgres表中。 COPY希望文件在数据库服务器上,但我有他们localy。有没有办法从本地机器上传它们?
答案 0 :(得分:0)
答案 1 :(得分:0)
我认为最好的答案是:"是的,有很多方法可以将文件上传到远程服务器"。 你有很多选择来做这件事。您可能更喜欢的一种取决于您与服务器通信的方式。
例如,您可以通过 FTP 上传文件,或通过HTTP 网络表单提交。 或者,您可以将远程文件系统作为外部驱动器连接到本地计算机,然后将其复制。
此外,还有许多实用程序,例如SqlBulkCopy
。它允许您不上传文件,而是从DataTable
远程插入多行。
请看this post。
答案 2 :(得分:0)
我找到了非常聪明的方法:) 我在我的查询中使用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();