我正在用数百万条记录填充一个postgres表。为了加快这个过程,我正在使用DBD:Pg中的pg_putcopydata。我正在遵循这个例子:
$dbh->do("COPY mytable(flavor, slices) FROM STDIN WITH DELIMITER '~'");
$dbh->pg_putcopydata("Pepperoni~123n");
$dbh->pg_putcopydata("Mushroom~314n");
$dbh->pg_putcopydata("Anchovies~6n");
$dbh->pg_putcopyend();
有些记录中,其中一个字段可能是 emtpy。为了插入空值,我尝试在pg_putcopydata中使用"undef","Null","null","NULL"。他们都没有工作。
如何使用 pg_putcopydata 插入 NULL 值?
要包含 NULL,您必须使用文本插入,用文本模式标识 null,例如 N
.这可以在COPY
命令语法中指定,例如
COPY ... FROM ... WITH (DELIMITER '~', NULL 'N')
然后
$dbh->pg_putcopydata("NoSuchFood~\Nn");
(将反斜杠加倍以生成发送到 Pg 的文字反斜杠)。
这看起来像美国农业部数据库.如果是这样,这是我之前写的答案。