C#将.csv文件从本地机器复制到远程postgresql服务器

时间:2014-08-15 10:15:21

标签: c# sql postgresql

我在C#程序中创建.csv文件,我想通过COPY命令将它们上传到postgres表中。 COPY希望文件在数据库服务器上,但我有他们localy。有没有办法从本地机器上传它们?

3 个答案:

答案 0 :(得分:0)

如果您可以访问服务器的硬盘驱动器,则可以使用File.Copy方法复制它:

File.Copy(sourceFile, destFile);

来源:File.Copy on MSDN

答案 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();