postgresql - Cloud SQL - PostgreSQL - 如何导入 .csv 文件?

标签 postgresql google-cloud-platform google-cloud-sql postgresql-copy

我的本​​地计算机上有一个运行 PostgreSQL 的 Cloud SQL 实例和一个 .csv 文件。

我创建了一个用户和一个数据库。我以该用户身份登录该数据库,并创建了一个与我的 .csv 文件匹配的表。

我有一个 .csv 文件和一个包含以下内容的 import.sql 文件:

COPY <my-table-name>
FROM 'C:\<path-to>\data.csv'
WITH (FORMAT csv);

当我运行 psql 命令时:

psql -f import.sql <connection string>

我回来了:

psql:./import.sql:3: ERROR:  must be superuser to COPY to or from a file
HINT:  Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

我尝试通过以 postgres 用户的身份使我的用户成为“ super 用户”,但我得到了这个:

psql:./add-superuser.sql:1: ERROR:  must be superuser to alter superusers

显示所有用户,显示:

postgres-> \du
 cloudsqladmin     | Superuser, Create role, Create DB, Replication, Bypass RLS 
 cloudsqlagent     | Create role, Create DB                                     | {cloudsqlsuperuser}
 cloudsqlreplica   | Replication                                                | {}
 cloudsqlsuperuser | Create role, Create DB                                     | {}
 <my-user>         | Create role, Create DB                                     | {cloudsqlsuperuser}
 postgres          | Create role, Create DB                                     | {cloudsqlsuperuser}

postgres 是 cloudsql super 用户,但不是“ super 用户”。如何导入此 .csv 文件?

我不知道如何以用户 cloudsqladmin 身份登录/获取访问权限,或者如何授予角色以允许导入文件。我迫切需要尽快得到帮助。

Google 在 Cloud Sql 和 Postgres 的这一领域的文档非常糟糕。它让我无所适从,非常困惑。

最佳答案

PostgreSQL 是一项托管服务,因此您对用户有一些限制。您不能授予 SUPERUSER 权限。到目前为止,您可以做的是从控制台导入 CSV 文件。

将文件导入 CloudSQL (PostgreSQL) 数据库:

首先确保表存在于数据库中。连接到您的 CloudSQl (PostgreSQL) 实例。运行命令 SELECT * FROM pg_catalog.pg_tables; 以列出所有表。如果您在列表中找到了您的表,请在将数据导入数据库时​​为 Table 使用完全相同的名称。

  1. 上传存储桶文件夹中的 CSV 文件

  2. 在 SQL 页面中找到 CloudSQL (PostgreSQL) 实例并单击实例名称。

  3. Instance details页面点击Import

  4. Cloud Storage file 中,从存储桶中选择 CSV 文件。

  5. 导入格式中,选择CSV

  6. table 中写入要导入数据的表的名称。

  7. 点击导入,数据将被导入。

我自己尝试了上述方法,并成功将自定义 CSV 文件上传到 CloudSQL (PostgreSQL)。

关于postgresql - Cloud SQL - PostgreSQL - 如何导入 .csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54284632/

相关文章:

java - 从 PostgreSQL 时间戳值格式化 java.time Instant 值

c++ - ubuntu 上 libpq header 的 "standard"位置?

python - 在部署到 App Engine 期间不考虑 Gcloudignore 文件

javascript - 将 GCSQL 中存储为 blob 的 SVG 图像转换为 Apps 脚本中的字符串

google-cloud-platform - 云跑: Connecting to a CloudSQL database on another GCP Project

sql - 如何使用 SQL 窗口函数计算聚合的百分比

postgresql - Nxlog im_dbi 不工作

python - 在CENTOS上安装Google Cloud SDK : Not finding correct Python version

google-cloud-platform - 如何更改我的虚拟机实例操作系统

java - MySQL 访问被拒绝的 GAE CloudSQL