我正在尝试将一个.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"
我已经四处寻找遇到此错误时该怎么办,但没有任何帮助。其他人遇到过吗?
4条答案
按热度按时间t30tvxxf1#
三种可能的原因:
1.文件中的一行或多行只有4个或更少的空格字符(分隔符)。
1.一个或多个空格字符已转义(无意中)。也许在一个未加引号的值的末尾加一个反斜杠。对于您正在使用的(默认)
text
,手册解释如下:反斜杠字符(
\
)可以在COPY
数据中用于引用数据字符,否则这些字符可能被用作行或列分隔符。从具有匹配布局的表阅读数据时,
COPY TO
或pg_dump
的输出不会出现任何这些错误。但也许您的文件已被编辑或来自不同的,错误的来源?1.你没有使用你认为你正在使用的文件。psql命令行接口的
\copy
元命令是COPY
的 Package 器,读取客户端本地的文件。如果您的文件位于服务器上,请改用SQL命令COPY
。ev7lccsx2#
仔细检查文件。在我的例子中,文件末尾的一个空行导致了
ERROR: missing data for column
。删除了它,工作得很好。Printing the blank lines可能会揭示一些有趣的事情:
z4iuyo4d3#
我也犯过类似的错误。检查在导出数据时使用的pg_dump的版本以及要将其插入的数据库的版本。确保它们是相同的。此外,如果复制导出失败,则通过插入导出数据
mec1mxoz4#
尝试删除表,并创建一次列默认值,如果可能的话,因为我的情况下,我有同样的错误,并解决与删除表和重新创建添加默认值列!