我正在从事一个项目,涉及处理大量的XBRL文件(> 1m个独立文件)。我对XBRL毫不了解,目前感到很迷茫。
我有关于这些XBRL文档的数据存储在一个单独的MySQL数据库中,我想将XBRL数据添加到MySQL中,以便将所有内容都存储在一个数据库中。
如何最好地将XBRL文档中的数据传输到MySQL中?
是否有可用于批量处理的库?
我一直在寻找有关这些问题的教程,但找不到任何提供基本介绍的内容,只有许多高级信息。
我正在从事一个项目,涉及处理大量的XBRL文件(> 1m个独立文件)。我对XBRL毫不了解,目前感到很迷茫。
我有关于这些XBRL文档的数据存储在一个单独的MySQL数据库中,我想将XBRL数据添加到MySQL中,以便将所有内容都存储在一个数据库中。
如何最好地将XBRL文档中的数据传输到MySQL中?
是否有可用于批量处理的库?
我一直在寻找有关这些问题的教程,但找不到任何提供基本介绍的内容,只有许多高级信息。
希望您知道,MySQL是一个结构化数据存储,而XBRL
只是将商业文件映射到数字格式的表示。 XBRL
是基于XML
的文档,这意味着它是非结构化的,您需要从文档中获取的数据可能出现在特定文档中,也可能不出现。它还可以包含任何其他附加信息。XSD
定义了XML如何被组织和每个标记可以出现多少次。现在回答您的问题,您可以使用eXistDB
来存储XBRL文档,我过去也用过它。但是,有时会很慢。如果您仅需要从XBRL
中获取一些数据并将其存储在MySQL数据库中,则可以使用XPATH
。在以下简单的Python代码中,您可以从此文档中获取EquityTotalEndingBalance
和ReservesTotalEndingBalance
的值。
from lxml import etree
root = etree.fromstring(open("file.xml").read())
nsmap = root.nsmap
nsmap.pop(None) # There was some error without this.
data_one = root.xpath("//iascf-pfs:EquityTotalEndingBalance/text()",namespaces=nsmap)
data_two = root.xpath("//novartis:ReservesTotalEndingBalance/text()",namespaces=nsmap)
print data_one
print data_two
以下代码将打印出数值:
['37216000000', '36862000000', '42245000000']
['35903000000', '35558000000', '40971000000']
contextRef
吗?(而无需手动定义)我见过一些使用contextRef="current-mud"
,其他人使用contextRef="cfwd_31_12_2014"
或contextRef="FY1"
,我希望获得当前/最近的值。 - Paul Tibbetts<iascf-pfs:EquityTotalEndingBalance numericContext="Group1999AsOf">37216000000</iascf-pfs:EquityTotalEndingBalance>
中获取值。在这种情况下,xpath将是data_one = root.xpath("//iascf-pfs:EquityTotalEndingBalance[@numericContext='Group1999AsOf']/text()",namespaces=nsmap)
。这将返回'37216000000'
。希望这可以帮助您。如果这对您有用,请接受答案。谢谢。 - Mahadeva