将大型 Excell 文件导入到具有多个可选依赖项的父文件



我在应用程序中使用 Postgres 9.3 和 PHP。

我想将大型 Excell 文件导入到具有多个可选依赖项的父表的 postgres 中(基本上我必须检查这些父表是否存在行)。

我已经使用 php for loop 完成了它,但它似乎很慢。所以我必须在数据库层的 postgres 函数中提供一个解决方案。

谁能告诉我如何将 php 数组发送到 postgres 函数并在 postgres 函数中循环数组,循环实现业务规则和在表格中插入单个行。

批量加载到PostgreSQL的最快速接口是COPY API。使用此 API,您将由所选分隔符分隔的值行块(字符串形式)发送到 PostgreSQL。这种方法非常快。您可以将父表加载到哈希表中(检查应该很快),并且检查的数据可以发送到Postgres。

我正在寻找 PHP 手册 - 有函数pg_copy_from,但由于内存使用,在 PHP 中使用大型数组可能很困难(但它非常简单)。稍微困难一点,但没有高内存要求是功能pg_put_line的方式。

<?php 
    $conn = pg_pconnect ("dbname=foo");
    pg_query($conn, "CREATE TABLE bar (a int4, b char(16), d float8)");
    pg_query($conn, "COPY bar FROM stdin");
    pg_put_line($conn, "3thello worldt4.5n");
    pg_put_line($conn, "4tgoodbye worldt7.11n");
    pg_put_line($conn, "\.n");
    pg_end_copy($conn);
?>

最新更新