22

我正在尝试将 .txt 文件导入 PostgreSQL。txt 文件有 6 列:

Laboratory_Name Laboratory_ID   Facility    ZIP_Code     City   State

和 213 行。

我正在尝试使用以下命令将此文件的内容放入 PostgreSQL\copy中调用的表中:doe2

\copy DOE2 FROM '/users/nathangroom/desktop/DOE_inventory5.txt' (DELIMITER(' '))

它给了我这个错误:

missing data for column "facility"

我四处寻找遇到此错误时该怎么做,但没有任何帮助。有人遇到过这种情况么?

4

3 回答 3

10

三种可能的原因:

  1. 文件的一行或多行只有 4 个或更少的空格字符(您的分隔符)。

  2. 一个或多个空格字符已被转义(无意中)。也许在未引用值的末尾带有反斜杠。对于text您使用的(默认)格式,手册说明:

    \可以在数据中使用反斜杠字符 ( )COPY来引用可能被视为行或列分隔符的数据字符。

从具有匹配布局的表中读取时,来自COPY TOpg_dump不会出现任何这些错误的输出。但也许您的文件已被编辑或来自不同的错误来源?

  1. 您没有使用您认为正在使用的文件。psql 命令行界面的\copy元命令是一个包装器,用于COPY读取客户端本地文件。如果您的文件位于服务器上,请改用 SQL 命令COPY
于 2014-11-05T01:30:52.683 回答
1

仔细检查文件。就我而言,文件末尾的空行导致ERROR: missing data for column. 删除它,并且工作正常。

打印空白行可能会发现一些有趣的东西:

cat -e $filename
于 2021-10-13T16:17:10.283 回答
0

我有一个类似的错误。检查用于导出数据的 pg_dump 版本以及您要将其插入的数据库版本。确保它们相同。此外,如果复制导出失败,则通过插入导出数据

于 2022-01-02T21:20:36.343 回答