如何用“ psql”解决“错误:列的数据丢失”?

时间:2019-12-02 14:01:03

标签: postgresql psql postgresql-copy

我有一个Makefile,我试图在其中将Python程序的输出复制到PostgreSQL服务器上托管的表中。

我的查询看起来像这样:

Python3 filter.py | psql -X -U $(DBUSER) -d $(DBNAME) -h $(DBHOST) -p $(DBPORT) -1 -e \
   -c "COPY table1(col1, col2) FROM STDIN with (format csv, header true, delimiter '|')"

但是,当我执行它时,出现以下错误消息:

ERROR:  missing data for column "col1"
CONTEXT:  COPY table1, line 168061: ""

为了尝试理解该问题,我将Python程序的输出导出到CSV文件,并且我意识到问题是由于行168060之后没有更多条目这一事实而引起的。因此行168061确实为空。 / p>

我尝试将NULL的{​​{1}}选项使用,但没有成功,我遇到了同样的错误。

我还使用非常相似的COPY语句设法将物理CSV文件的内容导入到table1中。可行,但我的目标是无需创建文件即可实现这一目标。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

解决方案是更改filter.py,使其不输出有问题的空行。

答案 1 :(得分:0)

谢谢大家的回答,

实际上,我只是在filter.py中做了一个简单的修改,现在就可以了。在使用PSQL导入期间,我太专注于这样做。

干杯:)