我正在开发一个应用程序来读取带有标题的.xlsx
,(Excel文件),并将这些行按原样插入到Postgres数据库的数据库表中。
我认为我将使用XLRD库。
关于如何做到这一点的任何想法?
我正在使用Python 2.6.6。
答案 0 :(得分:1)
到目前为止,最简单的方法是将其转换为CSV,然后使用psql
的{{1}}或psycopg2
's COPY
support。当通过内置的\copy
模块调用时,任何命令行.xlsx
到CSV
转换器都可以为您工作,或者对旧的Pythons调用subprocess
/ popen
。您不需要任何特殊的Python库。这也可以让你使用转换器,比如OpenOffice / LibreOffice的命令行模式,它也可以处理各种其他表格数据。
如果您想在Python中完成所有工作,可以使用the xlrd
lib you mentioned并将元组逐个反馈到system
的{{1}}中,这样您就可以仅使用流将行传输到PostgreSQL Python代码。您应该会发现existing examples of psycopg2 based programs that use copy_from
很容易适应使用psycopg2
作为数据源而不是Python list / csv input / whatever。
答案 1 :(得分:0)
如果您有Excel,请格式化XLS文件,以便没有标题和空白列(基本上只需创建一个表)。这也适用于LibreOffice。然后,将文件另存为CSV。然后,使用文本编辑器查看CSV文件,并验证事情是否正常。
一旦您对CSV的内容感到满意,编写一个读取每一行的python代码然后创建每个字段的列表就非常简单了。这是一个30秒的代码版本:
with open('example.csv','r') as csv_file:
full = csv_file.read().split('\n')
for line in full:
values = line.split(',')
print values
在'for'循环中,您可以单独访问列表中的每个元素,即'values [0]'