web-dev-qa-db-ja.com

非常に大きなXMLデータファイルをPostgreSQLに挿入する方法

PostgreSQL 9.5を使用して、XMLデータファイルをデータベースにインポートしようとしています。 XMLをロードするには、この関数を here から使用します

CREATE OR REPLACE FUNCTION bytea_import(p_path text, p_result out bytea) as
$$
DECLARE 
  l_oid oid;
BEGIN 
  SELECT lo_import(p_path) INTO l_oid;
  SELECT lo_get(l_oid) INTO p_result;
  PERFORM lo_unlink(l_oid);
END;
$$
LANGUAGE plpgsql;

小さなXMLファイルからデータを正常にロードしましたが、4GBのXMLファイルを試すと、エラーが返されます。

SQL Error [54000]: ERROR: large object read request is too large  
Where: SQL statement "SELECT lo_get(l_oid)" PL/pgSQL function
bytea_import(text) line 6 at SQL statement.

Lo_getは非常に大きなデータを読み書きできないようです。バージョン9.4以降、PostgreSQLは最大4TBを処理できると言われていますが、非常に大きなXMLデータファイルをPostgreSQL 9.5にインポートするにはどうすればよいですか?

前もって感謝します

1
BonZ

lo_importが成功し、4GBのラージオブジェクトが作成されます。

ただし、byteaデータ型のハード制限は1GBであるため、これらのコンテンツはbyteaに転送できません。

1
Daniel Vérité