У меня возникают проблемы при импорте данных с использованием .csv в PostgreSQL (больше 50K строк в CSV)

ОШИБКА я получаю:

Эта страница не работает, не отправляла никаких данных.
ERR_EMPTY_RESPONSE

Я использую язык PHP для чтения файла CSV.

Мой подход PHP выглядит как для обработки данных CSV:

$csvAsArray = array_map('str_getcsv', file($tmpName));

Я уверен, что вышеупомянутый код создает проблему после слов, код не получает выполнение.
Как я могу импортировать больше, чем, по крайней мере, 1 миллион данных одновременно?
Кто-нибудь может мне помочь, какой подход я должен выбрать?

0

Решение

Похоже, вы пытаетесь захватить все содержимое файла за один прием. Не делай этого 🙂 PHP array_map () не масштабируется до 1000-х … или миллионов строк.

ПРЕДЛОЖЕНИЕ:

  1. Считайте ваши данные во временный файл (как вы, кажется, делаете сейчас).

  2. Сделать Postgresql COPY

ПРИМЕР:

COPY my_table(my_columns, ...)
FROM 'my_file.csv' DELIMITER ',' CSV HEADER;
0

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

Я бы предложил использовать лига / CSV пакет для разбора и импорта CSV. @ paulsm4 правильно, что никогда не нужно помещать весь файл в память, а затем работать с ним, лучше читать построчно. Но этот пакет в хорошем состоянии и делает все это под капотом и довольно эффективно. И это гораздо более гибкий, чем COPY команда postgres на мой взгляд. Можно фильтровать содержимое, сопоставлять обратные вызовы с полями / строками и все это на стороне PHP.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector