2016-09-14 2 views
3

Мне нужен простой пример того, как скопировать данные из базы данных DB1 таблица T1 в базу данных DB2 таблицы T2.PostgreSQL: Как скопировать данные из одной таблицы базы данных в другую базу данных

Т2 имеет одинаковую структуру, как T1 (имена же столбцов, свойства. Просто разные данные) DB2, работающие на том же сервере, как DB1, а на другой порт.

+1

Используйте внешнюю обертку данных. –

ответ

3

В случае две базы данных находятся на двух разных экземплярах сервера, можно экспортировать в CSV из db1, а затем импортировать данные в db2:

COPY (SELECT * FROM t1) TO '/home/export.csv'; 

, а затем загрузить обратно в db2:

COPY t2 FROM '/home/export.csv'; 

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

Использование инструментов командной строки: pg_dump и Psql, вы могли бы сделать даже так:

pg_dump -U postgres -t t1 db1 | psql -U postgres -d db2 

Вы можете указать аргументы командной строки как pg_dump и psql указать адрес и/или порт сервер .

Другим вариантом является использование внешнего инструмента, такого как: openDBcopy, для выполнения миграции/копирования таблицы.

+0

Первое утверждение не поддерживается в Postgres, вы не можете ссылаться на таблицы в другой базе данных. (и, кроме того, 'db2.t2' ссылается на таблицу в _schema_' db2', а не на «базу данных» db2) –

+0

Взгляните на обновленный ответ, я неправильно понял вопрос. – aleroot

+0

Первое утверждение будет ** не ** работать через базы данных (только через _schema_, что и делает ваш оператор) –

0

Я предлагаю SQL Workbench/J. Он имеет приятную функцию, которая является Data Pumper. Вы можете пропустить столбец ID. Это изображение (Data Pumper in action) является примером, если я использую режим графического интерфейса. Код ниже, если я использую консольный режим.

WbCopy -sourceProfile=source 
    -sourceGroup=DB1 
    -targetProfile=target 
    -targetGroup=DB2 
    -targetTable=table2 
    -sourceTable=table1 
    -columns='sales_code/sales_code, store_sid/store_sid, pos_id/pos_id' 
    -ignoreIdentityColumns=false 
    -deleteTarget=true 
    -continueOnError=true 
    -commitEvery=1000; 
+0

Этот ответ очень широк и пахнет СПАМом. Пожалуйста, отредактируйте, чтобы дать более конкретный ответ на вопрос. Подумайте о том, как использовать код для описания проблемы опроса. –

+0

Я использую эту функцию в режиме графического интерфейса. Вот почему я разместил скриншот вместо кода. Тем не менее, я добавил пример кода, если я использую консольный режим. –

+0

Ваш отредактированный ответ выглядит хорошо. Ваш аватар может оскорбить людей. –