“从表复制”列与 .csv 文件不匹配

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

我正在尝试通过 pgadmin 将数据从 .csv 文件导入到创建的表中。

总结:

  • 有18列。 .csv file viewed in MS Excel table columns in pgadmin navigation pane
  • 原始数据是 .xlsx,通过 MS Excel 的 Export 转换为 .csv。
  • “EvaluationID”列是我在Excel中添加的,作为导入的主键。
  • 日期采用 ISO8601 格式(即 YYYY/MM/DD)。
  • 我使用 pgadmin 导航窗格来导入,而不是使用查询工具。

错误: process watcher

  • 值“Arlington”属于“AccountCity”列。 pgadmin 认为它在“AccountState”列中。
  • 这意味着 .csv 和 postgresql 表之间存在一列的偏移量。
  • “AccountState”列约束设置为长度为“2”的“字符”,因为州值采用缩写形式(例如亚利桑那州 -> AZ)。

问题: - 如何确保列匹配?

我检查了一下是否:

  • .csv 文件中的列名称与数据库表中的列名称相同。
  • .csv 文件中的逗号数量为每行 17 个,因此意味着 18 列。

我也尝试过:

  • 通过查询工具代码为每一列命名。请参阅下面的代码。

复制 premiums_data(评估 ID、评估日期、账户编号、账户名称、账户街道编号、账户街道名称、账户街道后缀、账户城市、账户状态、账户承保人、保单编号、保单类型、保单生效日期、保单到期日期、业务线、ExposureBase、ExposureBound、PremiumBound) FROM 'C:\Users\Nacho\OneDrive\Data Tools Practice\Personal Projects\Project2_Combined(Edited)Premium_Data_Group 项目数据集组 6.csv' CSV 标头分隔符 ',';

  • Pgadmin回归process watcher
  • Pgadmin 现在认为第一列不存在。
postgresql pgadmin
1个回答
0
投票

第一个错误是由于

AccountStreetSuffix
是文件的第 7 列,而您的表定义和
copy
列列表将其放在最后。

第二个是因为您的

copy
命令列列表未在区分大小写的列名称周围使用双引号:
"EvaluationID"
EvaluationID
不同。前者被解释为区分大小写的标识符,后者被折叠为小写,这就是为什么您可以在错误消息中看到它最终显示为小写
evaluationid
。您需要在代码中的任何地方或任何地方都用双引号引用标识符,除非它们都是小写的。如果您使用双引号创建表列,也请在
COPY
列列表中使用它们。

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