Существует база данных PostgreSQL, доступ к которой у меня ограничен (например, я не могу использовать pg_dump). Я пытаюсь создать локальное «зеркало» путем экспорта определенных таблиц из базы данных. У меня нет разрешений, необходимых для простого вывода таблицы в виде SQL из psql. Прямо сейчас у меня есть скрипт Python, который просматривает мои имена таблиц, выбирает все поля и затем экспортирует их как CSV:
for table_name, file_name in zip(table_names, file_names):
cmd = """echo "\\\copy (select * from %s)" to stdout WITH CSV HEADER | psql -d remote_db | gzip > ./%s/%s.gz"""%(table_name,dir_name,file_name)
os.system(cmd)
Я бы не хотел использовать CSV, если это возможно, поскольку я теряю типы полей и кодировка может быть испорчена. Во-первых, лучше всего было бы получить способ генерирования кода SQL для таблицы, используя \ copy. Следующим лучшим вариантом будет XML, в идеале с некоторым способом сохранения типов полей. Если это не сработает, я думаю, что последний вариант может быть двумя запросами - один для получения типов данных поля, другой для получения фактических данных.
Любые мысли или советы будут с благодарностью - спасибо!