Tôi hy vọng bạn biết rằng MySQL là lưu trữ dữ liệu có cấu trúc trong khi XBRL
chỉ là đại diện cho bản đồ tài liệu kinh doanh thành định dạng kỹ thuật số. XBRL
là tài liệu dựa trên XML
, ngụ ý nó không có cấu trúc và dữ liệu bạn yêu cầu từ tài liệu có thể hoặc không thể xảy ra trong tài liệu cụ thể đó. Nó cũng có thể chứa bất kỳ thông tin bổ sung nào khác. XSD
xác định cách XML có thể được cấu trúc và bao nhiêu lần bất kỳ thẻ nào có thể xảy ra. Bây giờ để trả lời câu hỏi của bạn, bạn có thể sử dụng eXistDB
, mà tôi cũng đã sử dụng trước đây để lưu trữ tài liệu XBRL. Tuy nhiên, nó có thể được làm chậm ở lần. Nếu bạn chỉ yêu cầu một số dữ liệu từ XBRL
và cần nó để lưu trữ trong cơ sở dữ liệu MySQL, bạn có thể sử dụng XPATH
. Trong mã python đơn giản sau, bạn có thể lấy các giá trị của EquityTotalEndingBalance
và ReservesTotalEndingBalance
từ this document.
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
Mã này sẽ in các giá trị:
['37216000000', '36862000000', '42245000000']
['35903000000', '35558000000', '40971000000']
Vậy làm thế nào bạn có thể giải quyết vấn đề của bạn sau đó?
Hoặc bạn sẽ phải chọn một NoSQL
dựa lưu trữ tài liệu XML như eXistDB
và viết XPath để có được những dữ liệu cụ thể.
Bạn có thể phân tích thủ công tài liệu XBRL như trên và kích hoạt XPath trực tiếp và lưu trữ dữ liệu.
Sự phức tạp sẽ phát sinh nếu bạn cần tiêu thụ tất cả dữ liệu từ tất cả các loại tài liệu. Vì vậy, bạn sẽ phải hạn chế về những gì bạn sẽ được tiêu thụ từ những tài liệu.
Tôi không nghĩ có bất kỳ, tôi đã cố gắng để làm điều tương tự về hai năm trước, ngoại trừ điểm đến là SQL Server. Bạn có loại tệp nào? –
Thay vì cơ sở dữ liệu SQL đi cho cơ sở dữ liệu NoSql từ hiệu suất và khả năng mở rộng perpective –