Синтаксис COPY в postgresql

INSERT INTO contacts_lists (contact_id, list_id)
          SELECT contact_id, 67544
          FROM plain_contacts

Здесь я хочу использовать команду "Копировать" вместо команды "Вставить" в SQL, чтобы сократить время на вставку значений. Я получил данные, используя операцию выбора. Как я могу вставить его в таблицу с помощью команды Копировать в postgresql. Не могли бы вы привести пример? Или любое другое предложение, чтобы добиться сокращения времени для вставки значений.

2 ответа

Решение

Поскольку ваши строки уже находятся в базе данных (потому что вы, очевидно, можете SELECT их), то использование COPY никак не увеличит скорость.

Чтобы использовать COPY, вы должны сначала записать значения в текстовый файл, который затем будет считан в базу данных. Но если вы можете SELECT их, запись в текстовый файл является совершенно ненужным шагом и замедлит вставку, а не увеличит ее скорость

Ваше заявление так быстро, как только может. Единственное, что может ускорить его (кроме покупки более быстрого жесткого диска), - это удалить любой потенциальный индекс на contact_lists который содержит столбец contact_id или же list_id и заново создайте индекс после завершения вставки.

Вы можете найти синтаксис, описанный во многих местах, я уверен. Одним из них является эта статья в вики.

Похоже, что это будет в основном:

COPY plain_contacts (contact_id, 67544) TO some_file

А также

COPY contacts_lists (contact_id, list_id) FROM some_file

Но я просто читаю с ресурсов, которые обнаружил Google. Попробуйте и отправьте ответ, если вам нужна помощь в решении конкретной проблемы.

Другие вопросы по тегам