Дамп таблицы postgresql в файл XML - PullRequest
0 голосов
/ 10 мая 2018

так что это относительно простой вопрос.У меня есть таблица postgresql, которую мне нужно записать в файл xml на моей локальной машине.Я прочитал всю документацию по https://www.postgresql.org/docs/current/static/functions-xml.html и https://www.postgresql.org/docs/9.4/static/sql-copy.html, и я получил следующую команду через командную строку psql:

COPY (SELECT table_to_xml(SELECT FROM Database public.'table', true, false, '')) to 'C:/users/me/file.xml';

Однако я продолжаю получатьсинтаксическая ошибка в или около "ОТ".В течение последнего часа я искал каждую ссылку SO, которая выглядела полезной ( Таблицы Postgresql существуют, но при запросе | не получается просто "отношение не может" просто не использовать имя таблицы PostgreSQL ("отношение не существует")существовать ") | используя копию в postgresql? | Postgres Data to XML ) и каждое видео на YouTube, которое звучало удаленно так, как мне нужно, но безрезультатно.Я пробовал с оператором FROM и без него, пробовал с SELECT * перед FROM и т. Д. ... не повезло.Там должно быть что-то ужасно простое, что я скучаю.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

ОК, так что обновите. Потратив большую часть моего дня на борьбу с этим, я нашел частичное решение. Используя информацию отсюда и В доступе отказано при попытке импортировать CSV-файл из PGAdmin Мне удалось получить команду для работы в PGAdmin 4, своего рода ...

COPY (SELECT table_to_xml('table_name', true, false, '')) to 'C:\XML\Table.xml';

Приведенная выше команда при запуске в PGAdmin, по-видимому, будет делать то, что я только предполагаю, что я хочу. У меня не было времени проверить, действительно ли он создает рабочий XML-файл таблицы, если я использую меньший набор данных. Тем не менее, если я буду следовать инструкциям в вышеупомянутой ссылке и создам папку с пустым XML-файлом в ней, и установлю права доступа, чтобы каждый мог читать / писать в папку, которую выполняет команда. Однако он использует неприличное количество памяти. Чтобы записать в XML таблицу размером всего около 2 ГБ, программа потребовала все 36 ГБ моей памяти, прежде чем потерпела крах. У меня нет времени продолжать тестирование, потому что я обнаружил, что могу добраться туда, где мне нужно, используя дамп в текстовый файл. В любом случае, я надеюсь, что это кому-то поможет.

0 голосов
/ 10 мая 2018

Попробуйте, кажется, синтаксис неправильный, который вы пробовали.

COPY (SELECT table_to_xml('table', true, false, '')) to 'C:/users/me/file.xml';

Альтернативно, вы можете попробовать:

psql -p5432 db_name \copy (SELECT table_to_xml('table', true, false, '')) TO 'C:/users/me/file.xml';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...