我需要将巨大的XML文件导入数据库 . 之后,我需要将其转换为另一种格式 .
目前我尝试使用Postgres做到这一点 .
我已经使用了一个250 MB的文件导入到表中
insert into test
(name, "element")
SELECT
(xpath('//title/text()', myTempTable.myXmlColumn))[1]::text AS name
,myTempTable.myXmlColumn as "element"
FROM unnest(
xpath
( '//test'
,XMLPARSE(DOCUMENT convert_from(pg_read_binary_file('test.xml'), 'UTF8'))
)
) AS myTempTable(myXmlColumn)
;
但是对于更大的文件(我尝试了> 1 GB的文件
SQL错误[22023]:错误:请求的长度太大错误:请求的长度太大错误:请求的长度太大
我的目标是导入和转换大小约为50 GB的文件 .
有什么建议/选择吗?
更新:
我们的想法是不将1GB文件导入一个字段 . 上面的代码能够将我的250MB文件加载到我的机器上3m 57s的1773844行中 . 我觉得这还不错 . 导入文件后,我可以相对快速地转换数据,因为Postgres很擅长 .
还有更好的想法?
1 回答
你试过
\COPY
UNNEST
的这个组合吗?使用中间表..
使用
psql
执行导入..加载XML后,可以在内部解析它 .