Копирование таблицы из одной БД в другую

[DAN]

Старожил PHPClub
Копирование таблицы из одной БД в другую

Всем привет!
Возник такой вопрос. Можно ли проще (не в лоб) и элегантнее скопировать часть таблицы (выборка по некоторому критерию) из одной БД в такую же таблицу в другой БД ? И если можно, то куда копать?

Пока что делаю тупо через prepare/execute с полученной выборкой, но почему-то мне кажется, что это не лучший способ.
 

neko

tеam neko
чет я ничо не понял
pgdump и copy может?
или может слуни сразу? а то вопрос звучит как репликация
 

[DAN]

Старожил PHPClub
COPY не подойдет потому как скопировать требуется не всю таблицу, а ее часть.
pgdump слишком громоздко.

Тут не репликация, а вот какая задача: необходимо в БД2 создать временную таблицу, которая представляет из себя некий "срез" таблицы в БД1.
Пока что делаю влоб. Выбираю из первой таблицы и insert-чу во вторую.
Просто показалось, что это несколько коряво, и есть более элегантное решение.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: [DAN]
Можно ли проще (не в лоб) и элегантнее скопировать часть таблицы (выборка по некоторому критерию) из одной БД в такую же таблицу в другой БД ? И если можно, то куда копать?
contrib/dblink?

но хрен его знает, будет ли это работать быстрее / качественнее, чем щас у тебя.

Автор оригинала: neko
или может слуни сразу?
"слоны", а не "слюни"! ;)
 

[DAN]

Старожил PHPClub
Sad Spirit, про dblink тоже подумал, но как-то отбросил эту идею.

Кстати, по поводу dblink такой вот вопрос.
Имеется две таблицы, обе в раздых БД. В табл1 (БД1) порядка 8 тыс. записей; в табл2 (БД2) порядка 5млн.
Некое подмножество значений из табл1 являет собой критерий выборки данных из табл2.
Что будет быстрее, скопировать это подмножество в БД2 и производить выборку из табл2 в пределах одной БД, либо с помощью dblink связывать эти таблицы?
Пока что время на копирование по порядку совпадает с временем выборки из табл2.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: [DAN]
Что будет быстрее, скопировать это подмножество в БД2 и производить выборку из табл2 в пределах одной БД, либо с помощью dblink связывать эти таблицы?
Здравый смысл подсказывает следующее: когда мы копируем таблицу из базы в базу, то в результате имеем join по двум таблицам, который оптимизатор умеет, хм, оптимизировать. В случае же использования dblink'а, с одной стороны от join'а стоит результат выполнения некоей функции, про которую ему ничего неизвестно...
 

nickg

Guest
Re: Копирование таблицы из одной БД в другую

Originally posted by [DAN]
Всем привет!
Возник такой вопрос. Можно ли проще (не в лоб) и элегантнее скопировать часть таблицы (выборка по некоторому критерию) из одной БД в такую же таблицу в другой БД ? И если можно, то куда копать?

Пока что делаю тупо через prepare/execute с полученной выборкой, но почему-то мне кажется, что это не лучший способ.
"Проще и элегантнее" держать не две базы, а две схемы в одной базе, и копировать простым
INSERT INTO schema2.mytable SELECT * FROM schema1.mytable
 

neko

tеam neko
а что тут где-то написано, что дело происходит в одном кластере? ;-)
 

[DAN]

Старожил PHPClub
nickg:
Если все данные загонять в одну схему (а это ~40Гб), то о какой оптимизации вообще можно говорить?

Sad Spirit:
и я о том же ))
Вобщем, оказывается, что при некоторых запросах сия проблема и не является проблемой вовсе.
 
Сверху