簡體   English   中英

使用 C# 將數據從 CSV 文件批量復制到 PostgreSQL 數據庫

[英]Bulkcopy data from CSV file to PostgreSQL database using C#

我有一個包含數據的 CSV 文件,我需要將這些數據復制到雲上 Postgres 數據庫中的表中。 我可以從 C# 控制台應用程序中執行此操作嗎? 如果可以,語法是什么? 到目前為止,我發現的所有內容都沒有給我一個清晰的示例,說明如何從 C# 進行調用。 在我的應用程序中,我使用 DSN 連接(PostgreSQL ODBC 驅動程序)到 Postgres 數據庫。 CSV 文件可以是本地的,也可以是 S3 存儲桶中的。

這是我的代碼(稍微簡化了一點):

string filePath = "C:\Bluh\Data.CSV";
string sql = string.Format("COPY {0}.{1} FROM '{2}' DELIMITER ',' CSV HEADER ", postgres_catalog, stagingTableName, filePath);
using (OdbcCommand command = new OdbcCommand(sql))
{
   OdbcConnection SQLConn = new OdbcConnection(DBConnectionString);
   SQLConn.Open();
   sc.Connection = SQLConn;
   command.ExecuteNonQuery();
}

當我使用上面的代碼時,我收到一個錯誤:

ERROR [42501] ERROR: must be superuser or a member of the pg_read_server_files role to COPY from a file;

如果我不能在本地文件上使用 COPY 命令,我如何在 S3 存儲桶中指定該文件的路徑? 語法是什么?

干杯!

這是我發現的和對我有用的

        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 中使用的帳戶具有足夠的權限。

另請注意,文件名區分大小寫,包括擴展名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM