C# 使用C将数据从CSV文件复制到PostgreSQL数据库#

C# 使用C将数据从CSV文件复制到PostgreSQL数据库#,c#,postgresql,csv,amazon-s3,C#,Postgresql,Csv,Amazon S3,我有一个CSV文件,其中包含我需要复制到云上Postgres数据库中的表中的数据。 我可以通过C#控制台应用程序来完成吗?如果可以,语法是什么?到目前为止,我所发现的一切都没有给我一个清晰的例子,说明如何从C#打电话。在我的应用程序中,我使用DSN连接(PostgreSQL ODBC驱动程序)连接到Postgres数据库。CSV文件可以是本地的,也可以是S3存储桶中的 这是我的代码(简化了一点): 当我使用上述代码时,我得到一个错误: ERROR [42501] ERROR: must be s

我有一个CSV文件,其中包含我需要复制到云上Postgres数据库中的表中的数据。 我可以通过C#控制台应用程序来完成吗?如果可以,语法是什么?到目前为止,我所发现的一切都没有给我一个清晰的例子,说明如何从C#打电话。在我的应用程序中,我使用DSN连接(PostgreSQL ODBC驱动程序)连接到Postgres数据库。CSV文件可以是本地的,也可以是S3存储桶中的

这是我的代码(简化了一点):

当我使用上述代码时,我得到一个错误:

ERROR [42501] ERROR: must be superuser or a member of the pg_read_server_files role to COPY from a file;
如果不能对本地文件使用COPY命令,如何在S3 bucket中指定该文件的路径?语法是什么


干杯

以下是我的发现和对我有用的东西

        string sql = "SELECT aws_s3.table_import_from_s3('SCHEMA.TABLENAME','COLUMN_A, COLUMN_B', '(FORMAT CSV, HEADER True)', aws_commons.create_s3_uri('S3-Bucket-Name', 'FileName.csv', 'awsRegion'))";

        using (OdbcCommand command = new OdbcCommand(sql))
        {
            ExecuteNonQuery(command);
        }
确保您在DSN中使用的帐户具有足够的权限


还要注意,文件名区分大小写,包括扩展名[42501]错误:必须是超级用户或pg_read_server_files角色的成员才能从文件复制您是否已将自己添加为超级用户?这能解决问题吗?
COPY
作为服务器用户运行。因此,它正在读取的文件需要该用户可以访问,而运行该命令的数据库用户需要文件读取权限,例如超级用户或具有这些权限的角色成员。有关更多详细信息,请参见此处的“注释”部分。
        string sql = "SELECT aws_s3.table_import_from_s3('SCHEMA.TABLENAME','COLUMN_A, COLUMN_B', '(FORMAT CSV, HEADER True)', aws_commons.create_s3_uri('S3-Bucket-Name', 'FileName.csv', 'awsRegion'))";

        using (OdbcCommand command = new OdbcCommand(sql))
        {
            ExecuteNonQuery(command);
        }