首页 > 解决方案 > 如何将 200 万个 XML 文件导入 Postgresql?

问题描述

我有大约 200 万个 XML 文件。我需要提取、索引和搜索数据。我想在 Postgresql 中导入它们:我不知道这是否是最好的选择——可能不是——但我知道这是一个数据库。

我创建了一个非常简单的表:

CREATE TABLE articolo (
    id_articolo BIGSERIAL not null
        constraint articolo_pk
            primary key,
    data xml,
    is_comm boolean default true,
    data_ins timestamp default now()
);

像这样的查询很好:

INSERT INTO articolo (data) 
VALUES (pg_read_file('/home/articoli/comm_use/Psychophysiology/PMC7027463.nxml')::xml);

我需要一种有效的方法,因为服务器使用旧的 7200 硬盘并且有点慢。导入 /home/articoli/comm_use 文件夹及其子文件夹的所有 xml 文件的最佳方法是什么?

标签: xmlpostgresql

解决方案


您可能应该从 xml 中提取最重要的字段,并使它们成为表中的真实列。

但无论如何,您当然不想为插入的每一行发出 fdatasync,因此要么将许多行合并到一个事务中,要么将 synchronous_commit 设置为关闭。

如果您的 xml 文件没有内部制表符、换行符或反斜杠(或者您可以对它们进行预处理以删除或转义其中任何一个),那么您可以将数据流式传输到COPY articolo (data) from STDIN


推荐阅读