当前位置:  开发笔记 > 编程语言 > 正文

使用python将数据从xml文件填充到sqlite数据库

如何解决《使用python将数据从xml文件填充到sqlite数据库》经验,为你挑选了2个好方法。

我有一个问题涉及解决问题的一些指导.我有一个xml文件,我必须使用脚本语言填充到数据库系统(无论是,它可能是sqlite,mysql):Python.

有没有人知道如何进行?

我需要进一步阅读哪些技术?

我必须安装哪些环境?

关于同一主题的任何教程?

我已经尝试使用其他语言的基于树和sax的方法解析xml,但是从Python开始,我不知道从哪里开始.我已经知道如何设计我需要的数据库.

另一个问题是,Python是否可以单独执行数据库ddl查询?



1> Alex Martell..:

我建议您研究ElementTree将XML文件解析到内存中(解析它,然后将它全部发送到SQL DB,可能更容易,但是如果文件很大,元素树也允许增量操作) - 它是标准Python库作为模块xml.etree.

我推荐sqlite3(也在标准Python库中)作为选择的关系数据库(如果你有选择),再次因为它方便而且容易 - 底层的SQLite嵌入式关系数据库也在其自己的站点上有很好的文档.如果您需要有关Python如何与关系数据库("DB-API")进行交互的一般教程,那么这里有一个很好的教程.

一旦你完全理解了etree和sqlite3 - 并且你不一定需要安装任何东西(这是他们的魅力的一部分;-) - 你基本上都已经设置好了.(当然是SQLite本身的安装(命令行和/或GUI工具),所以你可以查看你的数据库文件并调整它们可能很好,像oXygen或XMLmind这样的图形XML编辑器可以查看和/或调整你的XML ,但根本不需要任何类型的工具,与使用Python而不是其他语言进行XML解析和SQLite编写完全没有关系;-).

是的,如果您选择使用其他关系数据库,您可以完美地做到CREATE TABLE和其他DDL查询sqlite3(以及任何其他符合DB-API的Python模块;-).



2> kev..:

你可以用手工做的这一切sqlite3xmlstarlet.

将xml转换为csv

将csv导入db.

(也许这不是你想要的.但它很方便)

# content of xml file
$ cat artist.xml
Ae2300d8b0232c06c?? ???(Sarah Brightman)Sa3f6b810d7f98646Gloomy Sunday?? ???(Sarah Brightman)Ae2300d8b0232c06c????227.0truetruetrueBfef909d41922984atruefalseSbb94fa21258a8b51???(2008???????)(You And Me)???? ???(Sarah Brightman)A6682d46bd4bdfc84Ae2300d8b0232c06c??? 2008????????256.0truetruetrueBabf3ab3b7ef0e3edtruefalseS6a47788bef57ff87Scarborough Fair?? ???(Sarah Brightman)Ae2300d8b0232c06c????251.0truetruetrueBfef909d41922984atruefalseSde1aa68da126ddfeTime To Say Goodbye?? ???(Sarah Brightman)Ae2300d8b0232c06cSymphony: Live In Vienna275.0truetruetrueB0187937a07b940f7truefalseS7483cc8c44e06bbbAmazing Grace?? ???(Sarah Brightman)Ae2300d8b0232c06c???? - ???186.0truetruetrueB38e85a3056c0381ctruefalseS2d9683c7230e18deThis Love?? ???(Sarah Brightman)Ae2300d8b0232c06c????371.0truetruetrueBfef909d41922984atruefalseScfb4989195b44e57Here With Me?? ???(Sarah Brightman)Ae2300d8b0232c06c????324.0truetruetrueBfef909d41922984atruefalseS7bafc588178b932cLa Lune?? ???(Sarah Brightman)Ae2300d8b0232c06c????173.0truefalsetrueBfef909d41922984atruefalse

# convert xml to csv file using xmlstarlet
$ xml sel -t -m '//song' -v 'concat(id, ",", name, ",", duration)' -n artist.xml | sed '$d' >artist.csv

# content of csv file
$ cat artist.csv
Sa3f6b810d7f98646,Gloomy Sunday,227.0
Sbb94fa21258a8b51,???(2008???????)(You And Me),256.0
S6a47788bef57ff87,Scarborough Fair,251.0
Sde1aa68da126ddfe,Time To Say Goodbye,275.0
S7483cc8c44e06bbb,Amazing Grace,186.0
S2d9683c7230e18de,This Love,371.0
Scfb4989195b44e57,Here With Me,324.0
S7bafc588178b932c,La Lune,173.0

# create sqlite database
$ sqlite3 song.db
sqlite> CREATE TABLE song(id, name, duration);

# enter csv mode to import csv file
sqlite> .mode csv
sqlite> .import artist.csv song

# check everything is ok
sqlite> .mode column
sqlite> .header on
sqlite> select * from song;
id                 name           duration
-----------------  -------------  ----------
Sa3f6b810d7f98646  Gloomy Sunday  227.0
Sbb94fa21258a8b51  ???(200  256.0
S6a47788bef57ff87  Scarborough F  251.0
Sde1aa68da126ddfe  Time To Say G  275.0
S7483cc8c44e06bbb  Amazing Grace  186.0
S2d9683c7230e18de  This Love      371.0
Scfb4989195b44e57  Here With Me   324.0
S7bafc588178b932c  La Lune        173.0

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有