我的本地计算机上有一个运行 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
使用完全相同的名称。
上传存储桶文件夹中的 CSV 文件
在 SQL 页面中找到 CloudSQL (PostgreSQL) 实例并单击实例名称。
在
Instance details
页面点击Import
。在
Cloud Storage file
中,从存储桶中选择 CSV 文件。在
导入格式
中,选择CSV
在
table
中写入要导入数据的表的名称。点击
导入
,数据将被导入。
我自己尝试了上述方法,并成功将自定义 CSV 文件上传到 CloudSQL (PostgreSQL)。
关于postgresql - Cloud SQL - PostgreSQL - 如何导入 .csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54284632/