postgresql 错误:在psql中使用\copy时缺少列的数据

vxf3dgd4  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(4)|浏览(1403)

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

Laboratory_Name Laboratory_ID   Facility    ZIP_Code     City   State

213行。
我尝试使用\copy将此文件的内容放入PostgreSQL中名为doe2的表中,使用以下命令:

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

它给了我这个错误:

missing data for column "facility"

我已经四处寻找遇到此错误时该怎么办,但没有任何帮助。其他人遇到过吗?

t30tvxxf

t30tvxxf1#

三种可能的原因:
1.文件中的一行或多行只有4个或更少的空格字符(分隔符)。
1.一个或多个空格字符已转义(无意中)。也许在一个未加引号的值的末尾加一个反斜杠。对于您正在使用的(默认)text,手册解释如下:
反斜杠字符(\)可以在COPY数据中用于引用数据字符,否则这些字符可能被用作行或列分隔符。
从具有匹配布局的表阅读数据时,COPY TOpg_dump的输出不会出现任何这些错误。但也许您的文件已被编辑或来自不同的,错误的来源?
1.你没有使用你认为你正在使用的文件。psql命令行接口的\copy元命令是COPY的 Package 器,读取客户端本地的文件。如果您的文件位于服务器上,请改用SQL命令COPY

ev7lccsx

ev7lccsx2#

仔细检查文件。在我的例子中,文件末尾的一个空行导致了ERROR: missing data for column。删除了它,工作得很好。
Printing the blank lines可能会揭示一些有趣的事情:

cat -e $filename
z4iuyo4d

z4iuyo4d3#

我也犯过类似的错误。检查在导出数据时使用的pg_dump的版本以及要将其插入的数据库的版本。确保它们是相同的。此外,如果复制导出失败,则通过插入导出数据

mec1mxoz

mec1mxoz4#

尝试删除表,并创建一次列默认值,如果可能的话,因为我的情况下,我有同样的错误,并解决与删除表和重新创建添加默认值列!

相关问题