PgAdmin4:执行复制命令后 PostgreSQL 中与列相关的问题

问题描述 投票:0回答:2

尝试了两种复制命令语法,对应的错误如下所示:

1.

复制智能手机(品牌名称、型号、价格、评级、has_5g、has_nfc、has_ir_blaster、processor_brand、num_cores、processor_speed、battery_capacity、fast_charging_available、fast_charging、ram_capacity、internal_memory、screen_size、refresh_rate、num_rear_cameras、num_front_cameras、os、primary_camera_rear、primary_cam era_front、扩展内存_可用、 Extended_upto、resolution_width、resolution_height)from 'C:\Program Files\PostgreSQL \data\data_copy\smartphones.csv' DELIMITER ',' CSV HEADER ;

错误:关系“智能手机”的列“brand_name”不存在[现实中存在]

2.

从 'C:\Program Files\PostgreSQL \data\data_copy\smartphones.csv' DELIMITER ',' CSV HEADER 复制智能手机;

错误:最后一个预期列后有额外数据 上下文:复制智能手机,第 2 行:“oneplus,OnePlus 11 5G,54999,89, TRUE,TRUE,FALSE,snapdragon,8,3.2,5000,1,100,12,256,6.7,120,3,1,androi...”

我无法在 PostgreSQL 中检索包含 26 列的 CSV 文件。类似地使用导入功能时,遇到错误“INTERNAL SERVER ERROR: 'columns'when attempts to import a csv file through pgAdmin4”。我在网上找不到合适的解决方案,那么有没有办法解决这个问题呢?如果是的话,您能提出您的建议吗?

postgresql copy command
2个回答
1
投票
  1. 不,没有。在这一点上你可以相信 PostgreSQL。

要么您没有连接到正确的数据库/查看正确的模式或类似的内容,要么(这很可能)您创建了引用的表,并且该列名为“Brand_Name”,带有大写字母或类似的内容。如果您(或您使用的工具)引用标识符,您可能想一直引用它们。

Google“sql case Folding”了解详细信息。

  1. 该行上有超过 26 个以逗号分隔的项目,但只有 26 列可将它们放入。

这几乎可以肯定是因为该文件不是正确的 CSV 文件。仔细检查该行,会有一个未加引号的值,其中有一个逗号。


0
投票

COPY 无法为您生成表格,因此无法运行。 必须先完成该操作,然后才能复制它。

这个问题现在引发了一个新的疑问。 PostgreSQL 有没有在使用复制或导入功能时自动生成表的方法?

© www.soinside.com 2019 - 2024. All rights reserved.