Импорт большого файла Excell в postgres с несколькими необязательными зависимостями от родителей

Я использую Postgres 9.3 и PHP в приложении.

Я хотел бы импортировать большой файл Excell в postgres с несколькими необязательными зависимостями с родительскими таблицами (в основном я должен проверить, существует ли строка с этими родителями).

Я сделал это с помощью php for loop, но это кажется очень медленным. Поэтому я должен прийти с решением в функции postgres на уровне базы данных.

Кто-нибудь может сказать мне, как я могу отправить массив php в функцию postgres и зациклить массив в функции postgres, реализовать бизнес-правило в цикле и
вставить отдельный ряд в таблицу.

0

Решение

Самый быстрый интерфейс для массовой загрузки в 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, "3\thello world\t4.5\n");
pg_put_line($conn, "4\tgoodbye world\t7.11\n");
pg_put_line($conn, "\\.\n");
pg_end_copy($conn);
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]