【问题标题】:Greenplum \ postgresql COPY: extra data after last expected columnGreenplum \ postgresql COPY:最后一个预期列之后的额外数据
【发布时间】:2017-03-24 00:09:17
【问题描述】:

我正在开发一个使用 PostgreSQL 版本 8.2 的 Greenplum DB 4.3 项目。我正在尝试使用 COPY 使用 STDIN 导入数据。

数据包含反斜杠、逗号、竖线和您能想到的任何其他内容。这些值不能更改。

以下是数据示例:

1000,"A",0,"","LKP","","L",0,"U","无|本地副本",

1001,"B",0,"","LIT","","L",0,"U","[1005]\source\",

我正在使用的命令:

(psql) \copy cdr.wf_step_props_ist from '/home/gpadmin/temp.csv' CSV FILL MISSING FIELDS DELIMITER ',' NEWLINE 'CRLF' QUOTE '"'

(c#) 复制 cdr.WF_STEP_PROPS_IST (STEP_ID,PARAM_CODE,OCCUR_NO,VALUE_FILE,EVAL_TYPE,DPC_FAILURE_MSG,DPC_PRIORITY,DPC_SEQ,VALUE_STATE,PARAM_VALUE) 从 STDIN CSV NEWLINE 'CRLF' QUOTE '\"' NULL ' ' DELIMITER ',' FILL MISSING FIELDS

但我不断收到此错误:

错误:最后一个预期列之后的额外数据(seg11 sdw3:40003 pid=14935) 上下文:复制 wf_step_props_ist,第 1 行: "10003,"FCExtConn",0,"","LKP","","L",0,"U","无|本地副本", 10003,"FCInput",0,"","LIT","","L",0,"U"..."

我从 Ubuntu 上的 C# 和 PSQL CLI 尝试了这个(使用 COPY 和 CSV 文件),结果是一样的。

我在 stackoverflow 上找到的答案并不能解决这个问题。有没有人可以向我解释为什么这不起作用?

谢谢

【问题讨论】:

  • 你有 10 列,但你的 csv 文件有 11.. 最后一个逗号是多余的。
  • 为什么你使用 COPY 将数据加载到 Greenplum 而不是 gpload 或使用 gpfdist 的外部表? gpload 快得多,而且易于配置。
  • 我正在尝试一种单一的方式来传输满足 Greenplum 和 Postgres 9+ 的数据。
  • 感谢您的反馈 :)

标签: c# postgresql greenplum


【解决方案1】:

我已经用PostgreSQL 9.4.10 执行了这个并且它的工作:

copy cdr.wf_step_props_ist FROM STDIN CSV DELIMITER ',' QUOTE ''''; < your_file.csv

您的数据:

1000,"A",0,"","LKP","","L",0,"U","无|本地副本"

1001,"B",0,"","LIT","","L",0,"U","[1005]\source\"

另请查看此链接以获取有关 copy in PostgreSQL 8.2 的更多信息

【讨论】:

  • 我知道它适用于较新版本的 Postgres。它在 Greenplum 中不起作用。
  • FILL MISSING FIELDSNEWLINE 'CRLF' 不在副本文档中。并且错误输出还表明您的列数比预期的多。删除行尾的逗号并避免不支持的复制参数。再试一次psql
  • 感谢您的反馈
  • COPY 支持 NEWLINE 和 FILL MISSING FIELDS
  • 我已经从 PostgreSQL 服务器 8 2 发言
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
相关资源
最近更新 更多