Как преобразовать и потоковое воспроизведение больших XML файлов в postgres? Mediawiki dump postgres - PullRequest
1 голос
/ 23 февраля 2020

Я хочу использовать postgres 'полнотекстовый поиск в самом большом доступном корпусе естественных языков c. Я скачал эту заглушку дампа Викимедиа из нескольких мегагерц для примера, цель состоит в дальнейшей работе с дампами около 70 ГБ без сжатия . Вот xsd . Я знаю, что есть другие открытые параллельные корпуса , с которыми проще работать, здесь я хочу остановиться на Викимедиа.

Это может показаться дубликатом, но я хотел бы исследовать более простой подход по сравнению к другим предложениям, которые я нашел: postgres список рассылки и lo , postgres список рассылки и js, здесь с pg_read_file , здесь с nodejs, здесь с разделением , здесь с разделением + csv ...

Я бы хотел препроцесс xml перед вводом postgres и stream it с командой copy . BaseX позволяет сериализовать xml в csv / text с помощью командной строки и xpath. У меня уже есть команда заглушки xpath в postgres.

Текстовый тег в XML включает в себя огромные текстовые объекты, содержимое статьи в Википедии в Викитексте, и их сложно добавить в CSV (кавычки, двойные кавычки, новые строки + весь странный синтаксис викитекста), поэтому мне интересно, о формате. В идеале я хотел бы поток, думая в настоящее время:

basex [-xpath command] | psql -c 'COPY foo FROM stdin (format ??)'

Вот мой вопрос : может ли basex обработать ввод xml и вывести преобразование в потоке, а не в пакетном режиме ? Если да, какой выходной формат я могу использовать для загрузки в postgres?

Я собираюсь в конечном итоге хранить данные в схеме mediawiki postgresql (внизу ссылки) , но я возьмусь за игрушечную схему без индекса, без триггера ... сначала. Проблема викитекста остается, но это другая история .

...