Sobes.tech
Назад к вопросам
Junior — Middle
68

Каким образом можно осуществить передачу данных между двумя базами данных в PostgreSQL?

Компании, где спрашивали
Рольф ТехРольф Тех

Ответ от нейросети

sobes.tech AI

Для передачи данных между двумя базами данных PostgreSQL из Python можно использовать несколько подходов:

  1. Использование библиотеки psycopg2: подключиться к обеим базам, считать данные из первой, затем вставить во вторую.

  2. Использование инструмента dblink или postgres_fdw: если базы доступны из одной, можно настроить внешние соединения и выполнять SQL-запросы напрямую.

  3. Экспорт и импорт через файлы: выгрузить данные из первой базы в CSV, затем загрузить во вторую.

Пример с psycopg2:

import psycopg2

# Подключение к первой базе
conn_src = psycopg2.connect(dbname='db1', user='user', password='pass', host='host1')
cursor_src = conn_src.cursor()

# Подключение ко второй базе
conn_dst = psycopg2.connect(dbname='db2', user='user', password='pass', host='host2')
cursor_dst = conn_dst.cursor()

# Чтение данных из первой базы
cursor_src.execute('SELECT id, name FROM table1')
rows = cursor_src.fetchall()

# Вставка данных во вторую базу
for row in rows:
    cursor_dst.execute('INSERT INTO table2 (id, name) VALUES (%s, %s)', row)

conn_dst.commit()

cursor_src.close()
cursor_dst.close()
conn_src.close()
conn_dst.close()

Такой подход подходит для небольших объемов данных. Для больших объемов лучше использовать специализированные инструменты или потоковую передачу.