c# - 使用 C# 将数据从 CSV 文件批量复制到 PostgreSQL 数据库
问题描述
我有一个 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 中使用的帐户具有足够的权限。
另请注意,文件名区分大小写,包括扩展名
推荐阅读
- python - 使用 C++ 解析 ONNX 模型。使用 c++ 从 onnx 模型中提取层、输入和输出形状
- amazon-web-services - 如何使用 nginx-ingress 控制器通过 TCP 公开多个服务?
- javascript - 引入消息之间的延迟
- php - 将一行的数据插入到html表单中
- airflow - 气流从昨天开始 Dag
- python - 将 Azure Blob 存储中的新 CSV 加载到 SQL DB
- python - 这个弃用警告是什么意思,以及如何解决它?
- python - 我应该在这个 common.Model() 中输入什么
- javascript - 在 JavaScript 中连接两个对象数组
- ios - Swift,如何在与后端 SignalR 集线器的 Web 套接字连接中指定用户