我尝试了多种方法将 .csv 文件导入 Cloud SQL (PostgreSQL),但没有成功。
psql -f import.sql 不起作用。它说我必须是 super 用户才能导入,但是\copy 有效。
所以我尝试了\copy ,但失败了。我得到:
postgres=> \copy ppw_raw FROM 'H:\data\data.csv' WITH (FORMAT csv);
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
所以最后我尝试从 https://console.cloud.google.com/path-to-sql-instance
我将 .csv 上传到存储桶,然后单击所有按钮将 .csv(在存储桶中)导入到我想要的数据库/表,以及我想要导入的用户(创建的用户)拥有我选择的数据库的表),
我收到一条弹出消息:
Import failed: Import CSV error: ERROR: relation "<my-table-name>"
does not exist.
但该表确实存在。创建表命令成功,当我描述该表时,它存在。
我现在已经尝试了三种不同的方法来导入 .csv,但我的报告截止日期非常紧迫。
是否有人能够通过任何方式成功将 .csv 文件导入 Google Cloud SQL/PostgreSQL?
最佳答案
我尝试了不同的方法将自定义 CSV
文件导入 CloudSQL (PostgreSQL) 数据库实例。您似乎正在尝试将数据导入到数据库中不存在的表中。当我尝试导入到不存在的表时,我遇到了同样的错误。
要导入 CSV 文件,请确保:
- CSV 文件的列数与数据库中的表的列数相同。
- 文件中的数据结构正确,可以表示 CSV 文件。
- 在将 CSV 文件导入 CloudSQL 之前,首先从表中导出几行并打开文件以查看数据的表示方式。将数据与要导入的 CSV 文件进行比较,并确保数据的表示方式相同。导出表单控制台时,选择 CSV 将导出到的存储桶文件夹,选择 CSV 选项,然后在
SQL 查询
中添加以下命令SELECT * FROM products LIMIT 5;
。它只会从数据库中导出前 5 条记录,因此不会花费太多时间。
要将文件导入 CloudSQL (PostgreSQL) 数据库:
首先确保该表存在于数据库中。连接到您的 CloudSQl (PostgreSQL) 实例。运行命令 SELECT * FROM pg_catalog.pg_tables; 列出所有表。如果您在列表中找到了您的表,请在将数据导入数据库时使用与表
完全相同的名称。
上传存储桶文件夹中的 CSV 文件
在 SQL 页面中找到 CloudSQL (PostgreSQL) 实例,然后单击实例名称。
在
实例详细信息
页面中,单击导入
。在
Cloud Storage 文件
中,从存储桶中选择 CSV 文件。在
导入格式
中,选择CSV
在
table
中写入要导入数据的表的名称。点击
导入
即可导入数据。
我自己尝试了上述方法,并成功将自定义 CSV 文件上传到 CloudSQL (PostgreSQL)。
关于postgresql - 无法从控制台将 .csv 导入 Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54297933/