c#从本地机器复制.csv文件到远程postresql服务器

本文关键字:postresql 服务器 文件 csv 机器 复制 | 更新日期: 2023-09-27 18:18:03

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

c#从本地机器复制.csv文件到远程postresql服务器

我认为最好的答案是:"是的,有很多方法可以上传文件到远程服务器"。你有很多选择。您可能更喜欢的一种方式取决于您与服务器通信的方式。

例如,您可以通过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