我正在填充一张包含数百万条记录的postgres表。为了加快这个过程,我正在使用DBD中的pg_putcopydata:Pg。 我正在效仿这个例子:
$dbh->do("COPY mytable(flavor, slices) FROM STDIN WITH DELIMITER '~'");
$dbh->pg_putcopydata("Pepperoni~123\n");
$dbh->pg_putcopydata("Mushroom~314\n");
$dbh->pg_putcopydata("Anchovies~6\n");
$dbh->pg_putcopyend();
有记录表明其中一个字段可能是emtpy。 为了插入空值,我尝试使用" undef"," Null"," null",""," NULL"在pg_putcopydata里面。他们都没有工作。
如何使用pg_putcopydata插入NULL值?
答案 0 :(得分:4)
要包含NULL,您必须使用文本插入,使用文本模式标识null,例如\N
。这可以在COPY
command syntax中指定,例如
COPY ... FROM ... WITH (DELIMITER '~', NULL '\N')
然后
$dbh->pg_putcopydata("NoSuchFood~\\N\n");
(加倍反斜杠以产生发送给Pg的文字反斜杠)。