Назад к вопросам
Рольф Тех
Junior — Middle
68
Каким образом можно осуществить передачу данных между двумя базами данных в PostgreSQL?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для передачи данных между двумя базами данных PostgreSQL из Python можно использовать несколько подходов:
-
Использование библиотеки psycopg2: подключиться к обеим базам, считать данные из первой, затем вставить во вторую.
-
Использование инструмента dblink или postgres_fdw: если базы доступны из одной, можно настроить внешние соединения и выполнять SQL-запросы напрямую.
-
Экспорт и импорт через файлы: выгрузить данные из первой базы в 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()
Такой подход подходит для небольших объемов данных. Для больших объемов лучше использовать специализированные инструменты или потоковую передачу.