Я пытаюсь скопировать всю таблицу из одной базы данных в другую в Postgres. Какие-либо предложения?
postgresql
copy
database-table
шухер
источник
источник
Ответы:
Извлеките таблицу и направьте ее прямо в целевую базу данных:
Примечание. Если в другой базе данных уже настроена таблица, используйте этот
-a
флаг только для импорта данных, в противном случае вы можете увидеть странные ошибки, такие как «Недостаточно памяти»:источник
pg_dump -U remote_user -h remote_server -t table_to_copy source_db | psql target_db
-a
флаг следует использовать только для данных . то естьpg_dump -a -t my_table my_db | psql target_db
. Пока я здесь, если ваша база данных находится на сервере, мне проще просто вывести базу данных в файл и затем скопировать этот файл в базу данных, а затем отправить содержимое файла в psql. например,pg_dump -a -t my_table my_db > my_file.sql
и после размещения этого на вашем сервере ->psql my_other_db < my_file.sql
pg_dump -t '"tableToCopy"' source_db | psql target_db
. Обратите внимание, что одинарные И двойные кавычки окружают имя таблицыВы также можете использовать функцию резервного копирования в pgAdmin II. Просто следуйте этим шагам:
Хорошо работает и может делать несколько таблиц одновременно.
источник
Objects
разделе. На OSX, нажмите кнопку SQL или получить сSQL Editor
помощьюTools
вставить в SQL скопированный из файла резервной копии меню.Использование dblink было бы удобнее!
источник
Использование psql на Linux-хосте, который имеет подключение к обоим серверам
источник
PGPASSWORD=password1 psql -U ...
тогда вам даже не нужны явные субоболочки! Обычно вам нужно сначала выполнить несколько действий для настройки, поэтому в любом случае могут потребоваться вспомогательные оболочки. Кроме того, пароли не будут экспортированы в последующие процессы. Спасибо!pg_dump -t '<table_name>' --schema-only
Сначала установите dblink
Затем вы бы сделали что-то вроде:
источник
INSERT INTO l_tbl (l_col1, l_col2, l_col3) SELECT * FROM dblink('dbname=r_db hostaddr=r_ip password=r_pass user=r_usr', 'select r_col1, r_col2, r_col3 from r_tbl where r_col1 between ''2015-10-29'' AND ''2015-10-30'' ') AS t1(col1 MACADDR, col2 TIMESTAMP, col3 NUMERIC(7,1));
(l означает local, r удаленно. Избегайте одинарных кавычек. Предоставляйте типыИспользуйте pg_dump для выгрузки данных таблицы, а затем восстановите их с помощью psql.
источник
Если у вас есть оба удаленных сервера, вы можете выполнить следующие действия:
Он скопирует упомянутую таблицу исходной базы данных в ту же именованную таблицу целевой базы данных, если у вас уже есть существующая схема.
источник
Вы можете сделать следующее:
источник
Вот что сработало для меня. Первый дамп в файл:
затем загрузите выгруженный файл:
источник
Чтобы переместить таблицу из базы данных A в базу данных B при локальной настройке, используйте следующую команду:
источник
export PGPASSWORD=<passw>
до запуска командыЯ попробовал некоторые решения здесь, и они были действительно полезны. По моему опыту лучшим решением является использование командной строки psql , но иногда я не чувствую необходимости использовать командную строку psql. Итак, вот еще одно решение для pgAdminIII
Проблема этого метода заключается в том, что должны быть записаны имена полей и типы таблиц, которые вы хотите скопировать.
источник
pg_dump
не работает всегда.Учитывая, что у вас есть одна и та же таблица ddl в обоих dbs, вы можете взломать ее из stdout и stdin следующим образом:
источник
То же, что и ответы user5542464 и Piyush S. Wanare, но разделены на два этапа:
в противном случае канал запрашивает два пароля одновременно.
источник
Вы должны использовать DbLink для копирования данных одной таблицы в другую таблицу в другой базе данных. Вы должны установить и настроить расширение DbLink для выполнения кросс-запроса к базе данных.
Я уже создал подробный пост на эту тему. Пожалуйста, посетите эту ссылку
источник
Проверьте этот скрипт Python
источник
Если обе БД (от и до) защищены паролем, в этом сценарии терминал не будет запрашивать пароль для обеих БД, запрос пароля появится только один раз. Итак, чтобы это исправить, передайте пароль вместе с командами.
источник
Я использовал DataGrip (по Intellij Idea). и было очень легко копировать данные из одной таблицы (из другой базы данных в другую).
Во-первых, убедитесь, что вы подключены к обоим источникам данных в Data Grip.
Выберите исходную таблицу и нажмите клавишу F5 или (щелкните правой кнопкой мыши -> выберите Копировать таблицу в.)
Это покажет вам список всех таблиц (вы также можете искать, используя имя таблицы во всплывающем окне). Просто выберите цель и нажмите ОК.
DataGrip позаботится обо всем остальном за вас.
источник
Если вы запустите pgAdmin (Backup:,
pg_dump
Restore :)pg_restore
из Windows, он попытается вывести файл по умолчанию,c:\Windows\System32
и именно поэтому вы получите ошибку «Разрешение / доступ запрещен», а не потому, что пользователь postgres недостаточно повышен. Запустите pgAdmin от имени администратора или просто выберите место для вывода, отличное от системных папок Windows.источник
В качестве альтернативы вы также можете представить свои удаленные таблицы в качестве локальных таблиц, используя расширение для сторонних данных. Затем вы можете вставить в свои таблицы, выбрав из таблиц в удаленной базе данных. Единственным недостатком является то, что это не очень быстро.
источник