Синтаксис 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. Попробуйте и отправьте ответ, если вам нужна помощь в решении конкретной проблемы.